R中不同长度向量的绑定列表

问题描述 投票:0回答:1

考虑具有不同长度的向量列表,例如

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)
r list vector bind
1个回答
0
投票

如果您想用

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
© www.soinside.com 2019 - 2024. All rights reserved.