rbind从list到data.frame的不同长度的时间和值向量
在此之前,我对没有提供可复制的示例表示歉意,但我希望 通过我的描述,这个案子变得很清楚 我有一份长长的资产价格清单,上面附有日期。 列表如下所示rbind从list到data.frame的不同长度的时间和值向量,r,list,plyr,rbind,R,List,Plyr,Rbind,在此之前,我对没有提供可复制的示例表示歉意,但我希望 通过我的描述,这个案子变得很清楚 我有一份长长的资产价格清单,上面附有日期。 列表如下所示 > my.list [[1]] AT0000743059.time AT0000743059 1 02.01.2012 24.020 2 03.01.2012 24.225 3 04.01.2012 24.130 4 05.01.
> my.list
[[1]]
AT0000743059.time AT0000743059
1 02.01.2012 24.020
2 03.01.2012 24.225
3 04.01.2012 24.130
4 05.01.2012 23.935
[[2]]
AT0000743055.time AT0000743055
1 02.01.2012 24.020
2 03.01.2012 24.225
3 04.01.2012 24.130
4 05.01.2012 23.935
5 09.01.2012 24.060
并非列表中的所有对象都具有相同的长度。
我需要的是将列表中的每个对象彼此相邻地rbind,以使输出看起来像这样
AT0000743059.time AT0000743059 AT0000743055.time AT0000743055
1 02.01.2012 24.020 02.01.2012 24.020
2 03.01.2012 24.225 03.01.2012 24.225
3 04.01.2012 24.130 04.01.2012 24.130
4 05.01.2012 23.935 05.01.2012 23.935
5 NA NA 09.01.2012 24.060
使用plyr的ldply以
> plyr::ldply(my.list, cbind)
AT0000743059.time AT0000743059 AT0000743055.time AT0000743055
1 02.01.2012 24.020 NA NA
2 03.01.2012 24.225 NA NA
3 04.01.2012 24.130 NA NA
4 05.01.2012 23.935 NA NA
5 02.01.2012 24.020
6 03.01.2012 24.225
7 04.01.2012 24.130
8 05.01.2012 23.935
9 09.01.2012 24.060
将NAs移动到底部,然后将其删除会导致问题
和以某种奇怪的方式转变的约会。我希望有一个有效的解决方案
解决这个问题的方法。感谢您的帮助现在,合并是在一个循环中定义的,可能根本不是预期的,但这将为您提供我建议的输出:
my.list <-list(
data.frame(AT0000743059.time = c("02.01.2012","03.01.2012","04.01.2012","05.01.2012"),
AT0000743059 = c(24.020,24.225,24.130,23.935),
stringsAsFactors = FALSE),
data.frame(AT0000743055.time = c("02.01.2012","03.01.2012","04.01.2012","05.01.2012","09.01.2012"),
AT0000743055 = c(24.020,24.225,24.130,23.935,24.060),
stringsAsFactors = FALSE)
)
result <- my.list[[1]]
colnames(result)[1] <- "time"
for (i in 2:length(my.list)){
temp <- my.list[[i]]
colnames(temp)[1] <- "time"
result <- merge(result, temp,all = TRUE)
}
my.list你真的想把他们联系起来,还是更合理地把他们加入时间栏?@Wannes Rosiers:这也是我可以处理的一个解决方案。你说可以把列表转换成一个大的xts对象吗?