2011-08-08 58 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