我有一个称为“块”的函数,该函数使用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))
谢谢!
答案 0 :(得分:1)
您似乎将do.call
与Map
混淆了。 do.call
用于向函数提供其存储在列表中的参数。 Map
用于在逐个参数的参数列表上并行调用函数。
以下是适合您的内容:
Map(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE)