【问题标题】:do.call returns single value from list of arguments - expecting multiple valuesdo.call 从参数列表中返回单个值 - 期望多个值
【发布时间】:2018-08-13 14:49:44
【问题描述】:

我有一个名为“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.callMap 混淆
  • Map(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE)mapply(block,latty=latlngVA$LATITUDE, longy=latlngVA$LONGITUDE) 会给你你想要的吗?
  • 是的!非常感谢,这非常有用。

标签: r curl do.call


【解决方案1】:

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

以下是适合您的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多