do.call returns 参数列表中的单个值 - 需要多个值
do.call returns single value from list of arguments - expecting multiple values
我有一个名为 "block" 的函数,它使用 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))
谢谢!
您似乎混淆了 do.call
和 Map
。 do.call
用于向函数提供其存储在列表中的参数。 Map
用于在参数列表中逐个元素地并行调用一个函数。
以下是适合您的内容:
Map(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE)
我有一个名为 "block" 的函数,它使用 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))
谢谢!
您似乎混淆了 do.call
和 Map
。 do.call
用于向函数提供其存储在列表中的参数。 Map
用于在参数列表中逐个元素地并行调用一个函数。
以下是适合您的内容:
Map(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE)