2013-07-10 61 views
1

我一直在玩ggmap R包,我非常喜歡它的繪圖功能來顯示地理數據。我一直在試圖用geocode函數對一些城市人口數據進行簡單繪圖,但我無法弄清楚如何以邏輯方式安排數據。既然這樣,我有一個列表的結構化數據,像這樣如何將列表附加到R數據框?

   City Type Population 
1   Detroit city  713777 
2  Grand Rapids city  188040 
3   Warren city  134056 
4 Sterling Heights city  129699 
5   Lansing city  114297 
6  Ann Arbor city  113934 

,我想追加與geocode返回的緯度和經度條目「列」。具體而言,如果上述數據框被命名爲密歇根州,我抓住座標與

lapply(as.vector(michigan$City), geocode) 

這需要一個字符串(在這種情況下,一個城市的名稱),並使用谷歌地圖API的座標猜測,產生列表名單:

[[1]] 
     lon  lat 
1 -83.04575 42.33143 

[[2]] 
     lon  lat 
1 -85.66809 42.96336 

[[3]] 
     lon lat 
1 -83.0282 42.493 

[[4]] 
     lon  lat 
1 -83.0302 42.58031 

[[5]] 
     lon  lat 
1 -84.55553 42.73253 

[[6]] 
     lon  lat 
1 -83.74304 42.28083 

我想的緯度和經度值追加到michigan數據幀「列」,而是因爲我lapply的結果是列表的列表,這不僅僅是棘手切片一些數組 - R中慣用這種方式的最佳方式是什麼?

+1

你能張貼一些示例代碼和您使用的'地址解析()'函數的數據?簡短的答案可能是使用'merge()'函數,除非你的數據結構很好,在這種情況下'cbind()'可能就足夠了。 – David

+2

嘗試從** plyr **中'ldply'而不是'lapply'或'do.call(rbind,...)'結果。 – joran

+0

嘿。特拉弗斯城在哪裏? –

回答

5

,因爲它是那麼簡單:

cbind(your_df, geocode(your_df$City)) 
+1

+1。它實際上是將被調用的'cbind.data.frame'。 –