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

时间:2017-07-14 12:47:27

标签: r purrr

我正在尝试使用purrr从此列表中访问级别formatted_address

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

最终输出应该是$ formatted_address : chr "Austin, TX, USA"元素的向量,即c('Austin, TX, USA', 'Houston, TX, USA')

首先,我尝试使用标准索引获取列表中两个元素中的第一个元素的记录,然后在this tutorial之后将其转换为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_chr创建formatted_address的记录向量?

1 个答案:

答案 0 :(得分:8)

我认为您的环境中存在命名冲突。因此,您调用的map函数是另一个函数的另一个函数(可能是maps包,它与错误代码中列出的参数匹配,请参阅here)。尝试使用显式上下文调用该函数,如下所示。另外,稍微更改一下您的语法,否则您的返回将为空。

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