考虑具有不同长度的向量列表,例如
lV
定义为
set.seed(123)
v1 = rnorm(n = 5)
v2 = rnorm(n = 4)
v3 = rnorm(n = 3)
lV = list(v1, v2, v3)
如何以类似于
的紧凑方式绑定向量do.call("cbind", lV)
但是获得
的输出cbind(v1[3 : 5], v2[2 : 4], v3)
?最好不要使用慢速函数。
如果不清楚,我试图保留每个向量的最后
n
元素,其中
n = max(sapply(X = lV, FUN = length))
print(n)
如果您想用
NA
填充较短的长度,您可以使用 lapply
更改列表中每个元素的长度:
do.call(cbind, lapply(lV, \(x){length(x) <- n; x}))
[,1] [,2] [,3]
[1,] -0.56047565 1.7150650 -0.4456620
[2,] -0.23017749 0.4609162 1.2240818
[3,] 1.55870831 -1.2650612 0.3598138
[4,] 0.07050839 -0.6868529 NA
[5,] 0.12928774 NA NA