do.call
与
cbind
?在下面的列表
foo
中,我想从每个 data.frames a、b 和 c 中获取
y
列,以在长度不同时使用
bar
值制作
NA
。我想要的输出在
bar
中。理想情况下,我可以并排看到一个整洁的解决方案。
foo <- list(
a = data.frame(x=1:2,y=c(5,4)),
b = data.frame(x=1:5,y=c(3,1,4,5,2)),
c = data.frame(x=1:3,y=c(8,9,0))
)
bar <- matrix(NA,ncol = 3, nrow = 5)
for(i in 1:3){
tmp <- foo[[i]]$y
bar[1:length(tmp),i] <- tmp
}
merge
通过
Reduce
获取数据帧
> unname(as.matrix(Reduce(\(x, y) merge(x, y, by = "x", all = TRUE), foo)[-1]))
[,1] [,2] [,3]
[1,] 5 3 8
[2,] 4 1 9
[3,] NA 4 0
[4,] NA 5 NA
[5,] NA 2 NA