2017-07-14 60 views
2

我試圖用purrr從該列表訪問級別formatted_address如何使用purrr從列表中提取元素?

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')

要開始了,我是想使用標準索引獲取列表中兩個元素中的第一個元素的記錄,然後將其轉換爲purrr,其後跟this tutorial

舉例來說,我認爲

> 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記錄向量?

回答

5

我認爲你在你的環境中有一個命名衝突。因此,您調用的map函數是另一個包(可能是maps包,它與您的錯誤代碼中列出的參數相匹配,請參閱here)中的另一個函數。嘗試用下面的顯式上下文來調用函數。此外,稍微改變你的語法,否則你的回報將是空的。

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

命名空間的混亂是常見的R.我使用哈德利的'strict'包,它迫使你明確你要調用一個重名的功能時使用的包裝開始。 https://github.com/hadley/strict –

+1

不錯,很好的建議,謝謝:) – JanLauGe