如何使用purrr从列表中提取元素?

6

我正在尝试使用purrr从以下列表中访问级别为formatted_address的内容:

tt <- lapply(c('Austin, Texas', 'Houston, Texas'),  
function(x) ggmap::geocode(x, output='all', nameType = 'long', sensor = F))

最终输出应该是一个向量,包含来自$formatted_address: chr“奥斯汀,德克萨斯州,美国”的元素,即c('奥斯汀,德克萨斯州,美国','休斯顿,德克萨斯州,美国')
首先,我尝试使用标准索引获取列表中前两个元素之一的记录,然后按照此教程将其转换为purrr
例如,我认为:
> tt[[1]]$results[[1]]$formatted_address
[1] "Austin, TX, USA"

以下代码看似相等,但实际不一样:

> map(tt[[1]]$results[[1]], 'formatted_address')
Error in map.poly(database, regions, exact, xlim, ylim, boundary, interior,  : 
  no recognized region names

为什么这两行代码不等价?我如何使用mapmap_chrformatted_address创建记录向量?

1个回答

10

我认为你的环境中存在命名冲突。因此,你调用的map函数实际上是另一个包中的函数(可能是maps包,在你的错误代码中列出的参数与之匹配,请参见这里)。尝试按照以下显式上下文调用该函数。另外,略微更改语法,否则你的返回值将为空。

purrr::map(tt, ~.x$results[[1]]$formatted_address)

2
在R中,命名空间混淆是很常见的。我开始使用Hadley的strict包,它强制你在调用具有重复名称的函数时澄清你想要使用哪个包。 https://github.com/hadley/strict - Andrew Brēza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接