我使用Movebank来组织来自景观上戴项圈动物的遥感数据.我一直很喜欢可以使用相关分析平台MoveApps创建的自动化、预定的工作流程.我对通过R使用API连接到应用程序输出非常感兴趣.我一直在阅读如何做到这一点,但我下面链接到的示例似乎主要集中在网页上显示结果.

https://docs.moveapps.org/#/API
https://github.com/movestore/movestore.github.io/blob/master/web-partner-api/example.html
https://docs.moveapps.org/web-partner-api/example.html
https://www.proquest.com/openview/63bd63824208b8d6706708fe101beb0c/1?pq-origsite=gscholar&cbl=2049297

我还没有找到指导用户如何通过R中的API访问输出的示例.我相信这是可能的--有很多关于如何通过R中的API拉取数据的例子--但我对这种过程相对陌生,发现很难弄清楚从哪里开始.以前有人这样做过吗?我认为MoveApps和R之间的这种联系对于自动化任务和所有级别的代码涉猎者来说非常棒.

推荐答案

您可以使用httr向API发送请求. 这里有一个例子:

library(move2)
library(httr)

# Credentials from the example page
username <- '8b536ed8-a681-4786-aa01-b26040106f9f'
token <- 'bdl@2nq@9SD!i31a1M7HxG7GQG93IQ0a'

# Insert username into URL
url <- sprintf("https://www.moveapps.org/web-partner/v1/workflowInstances/%s/artifacts/index", username)

# Send GET request
r <- GET(url = url, authenticate(username, token))

# Parse the response
res <- r |>
  content(as = "parsed", simplifyDataFrame = TRUE)

这会产生工作流信息的嵌套列表:

str(res)
List of 3
 $ workflowInstanceId   : chr "8b536ed8-a681-4786-aa01-b26040106f9f"
 $ workflowInstanceTitle: chr "Workflow Instance 001"
 $ results              :'data.frame':  9 obs. of  7 variables:
  ..$ appPositionInWorkflow: int [1:9] 0 1 2 3 3 4 4 5 5
  ..$ appTitle             : chr [1:9] "Movebank Location move1" "Remove Outliers move1" "Filter Last X Days move1" "Animated Map (moveVis) move1" ...
  ..$ fileName             : chr [1:9] "app-output.rds" "app-output.rds" "app-output.rds" "animation_moveVis.mp4" ...
  ..$ mimeType             : chr [1:9] "application/r-rds" "application/r-rds" "application/r-rds" "video/quicktime" ...
  ..$ fileSize             : int [1:9] 3194278 2932993 2932986 134280 2932986 15047 3683428 3683428 6017277
  ..$ modifiedAt           : chr [1:9] "2023-03-17T10:00:59.892611Z" "2023-03-10T03:15:53.323066Z" "2023-03-10T03:16:02.329737Z" "2023-03-10T03:18:35.108558Z" ...
  ..$ links                :'data.frame':   9 obs. of  1 variable:
  .. ..$ self: chr [1:9] "https://www.moveapps.org/web-partner/v1/workflowInstances/8b536ed8-a681-4786-aa01-b26040106f9f/apps/0/results/app-output.rds" "https://www.moveapps.org/web-partner/v1/workflowInstances/8b536ed8-a681-4786-aa01-b26040106f9f/apps/1/results/app-output.rds" "https://www.moveapps.org/web-partner/v1/workflowInstances/8b536ed8-a681-4786-aa01-b26040106f9f/apps/2/results/app-output.rds" "https://www.moveapps.org/web-partner/v1/workflowInstances/8b536ed8-a681-4786-aa01-b26040106f9f/apps/3/results/a"| __truncated__ ...

现在要访问文件:

# Download first file
tmp <- tempfile()
w1 <- GET(res$results$links$self[1], authenticate(username, token), write_disk(tmp))

# Read downloaded file
movedat <- readRDS(tmp)

# Plot
plot(movedat)

enter image description here

R相关问答推荐

无法在我的情节中表现出显着的差异

如何在R中正确对齐放射状图中的文本

如何自定义Shapviz图?

从R导出全局环境中的所有sf(numrames)对象

如何利用模型函数在格图中添加双曲/指数曲线

如何使用R对每组变量进行随机化?

迭代通过1个长度的字符串长字符R

R根据条件进行累积更改

提取具有连续零值的行,如果它们前面有R中的有效值

一小时满足条件的日期的 Select

如何写商,水平线,在一个单元格的表在R

将. xlsx内容显示为HTML表

找出二叉树中每个 node 在R中的深度?

LOF中的插图短文字幕

根据现有列的名称和字符串的存在进行变异以创建多个新列

如何将R中数据帧中的任何Nas替换为最后4个值

在R函数中使用加号

在另一个包中设置断点&S R函数

删除字符串R中的重复项

GOGPLATE geom_boxploy色彩疯狂