我运行了一个双循环并将一些数据存储到列表中。 具体来说,我存储了大约15列的每个数据帧 60到70行作为列表天气的一个元素。 例如
> weather[[4]][[5]]
TimeCEST TemperatureC Dew.PointC Humidity Sea.Level.PressurehPa VisibilityKm
1 12:00 AM 12 8 71 1013 20
2 12:20 AM 11 7 76 1013 10
3 12:50 AM 11 7 76 1013 10
4 1:00 AM 11 8 71 1013 30
现在,我希望将所有这些数据帧(大约360)按行合并到一个数据帧中。
我尝试再次运行for循环和rbind,但它给出了:
Error in match.names(clabs, names(xi)) :
names do not match previous names.
然后我尝试了这个:
Reduce(function(x,y) {
dd<-merge(x,y,by=0); rownames(dd)<-dd$Row.names; dd[-1]
}, weather)
但它给出了:
Error in data.frame(list(TimeCET = c(19L, 21L, 23L, 1L, 3L, 5L, 25L, 27L, :
arguments imply differing number of rows: 71, 72, 67, 68
作为后续跟踪,我尝试用NA替换NUll值,以防出现问题,但它是相同的。
请您解释一下这个问题,并说明解决问题的方法? 提前谢谢
答案 0 :(得分:0)
看起来weather
是一个嵌套的data.frames列表。也许你将这些数据合并为两个步骤,比如这个未经测试的代码
second_lvl <- function(lst) {
# make one df from weather[[i]][[1]], weather[[i]][[2]], etc.
do.call(rbind, lst)
}
# this should make res a list of data.frames
res <- lapply(weather, FUN=second_lvl)
# this should combine the data.frames
res <- do.call(rbind, res)