do.call从参数列表中返回单个值-需要多个值

时间:2018-08-13 14:49:45

标签: r curl do.call

我有一个称为“块”的函数,该函数使用CURL包从Web API检索信息。该函数接受两个参数(“ latty”和“ longy”),我想使用do.call来传递参数值列表。

但是,它似乎仅传递第一对值,而不会传递到下一对值。

这是我的代码:

block <- function(latty, longy){
   Sys.sleep(0.25)
   url <- paste0("https://geo.fcc.gov/api/census/block/find?latitude=", 
          latty, "&longitude=", longy)
   response <- curl(url)
   data <- readLines(response, warn=FALSE)
   blockID <- substr(sub(".*Block FIPS=\\\"","",data), 0, 15)
   return(blockID)
   }

result <- do.call(block, list(latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE))

谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎将do.callMap混淆了。 do.call用于向函数提供其存储在列表中的参数。 Map用于在逐个参数的参数列表上并行调用函数。

以下是适合您的内容:

Map(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE)