2011-08-08 95 views
2

一個星期前我在R-help上詢問了這個問題,直到現在還沒有答案......我列出了多個gps-和溫度數據的data.frames。一個data.frame樣子:通過時間戳在列表內對列表進行合併

GPS:

 date  time  x.lat  x.lon 
1  22.05.11 13:50:37 53.57908 10.034599 
2  22.05.11 13:50:38 53.57906 10.034633 

溫度:

 date  time  temp 
1  22.05.11 13:50:38 21.6120 
2  22.05.11 13:50:39 21.6070 

所以我有兩個列表,一個多GPS-data.frames和一個帶有多個臨時-dataframes 。我使用lapply來操縱這兩個列表,但不能將temp和gps合併到一個大列表中,其中包含所有data.frames,只存在於兩個列表中的時間戳記,僅用於上述示例13:50:38 exists在這兩個:

GPS +溫度:

 date  time x.lat  x.lon  temp 
1  22.05.11 13:50:38 53.57906 10.034633 21.6070 

對於單個數據幀是工作只是罰款:

both <- merge(gps,temp) 

對於data.frames的兩個列表我第一次嘗試的lapply在這兩個名單上...像

both <- lapply(temp, gps, function(x){x <- merge(x);x}) 

然後,我

both <- merge.list(gps,temp) 

但這doesn't工作試過它的。它只是將第一個列表 「GPS」 既

+1

您的術語或者是混淆或混淆。你說你「有兩個列表,一個有多個gps-data.frames,一個有多個temp-dataframes」,但你沒有給出這樣一個結構的例子。 「GPS」和「temp」不會像「數據框列表」那樣顯示。你真的有列表的元素是數據框? –

回答

3

嘗試Map

> Map(merge, GPS, temp) 
[[1]] 
     date  time x.lat x.lon temp 
1 22.05.11 13:50:38 53.57906 10.03463 21.612 

或只調用mapplyMap作用:

> mapply(merge, GPS, temp, SIMPLIFY=FALSE) 
[[1]] 
     date  time x.lat x.lon temp 
1 22.05.11 13:50:38 53.57906 10.03463 21.612 
+0

謝謝,這工作。 Joshua Wiley-2在R-Help中發佈的另一個解決方案是: lapply(seq_along(GPS),function(i){merger(GPS [[i]],temp [[i]]) }) – tomtomme