如何在R中的列表中组合不同长度的向量?

组合列表中包含的以下向量时遇到问题:

x <- list(as.numeric(c(1,4)),as.numeric(c(3,19,11)))
names (x[[1]]) <- c("species.A","species.C")
names (x[[2]]) <- c("species.A","species.B","species.C")

给出以下列表:

>x
>[[1]]
>species.A species.C 
>         1         4 
>[[2]]
>species.A species.B species.C 
>        3        19        11 

使用do.call函数组合它们:
y< - do.call(cbind,x) 得到:

>y
>             [,1] [,2]
>   species.A    1    3
>   species.B    4   19
>   species.C    1   11

虽然我想获得这个:

>             [,1] [,2]
>   species.A    1    3
>   species.B   NA   19
>   species.C    4   11
最佳答案
看起来你真的想要合并.因此,合并将起作用.你只需告诉它合并名称,并保留所有行.

do.call(merge, c(x, by=0, all=TRUE))   # by=0 and by="row.names" are the same

(这将创建一个数据框而不是矩阵,但对于大多数目的来说,这应该不是问题.)

转载注明原文:如何在R中的列表中组合不同长度的向量? - 代码日志