将具有各种长度向量的列表转换为R中的data.frame的最简单方法

这里我有一个不同长度向量的列表.我想要一个data.frame.我在SO中看过很多关于它的帖子(参见参考资料),但是没有一个像我预期的那样简单,因为这实际上是数据预处理中的常见任务.谢谢.

这里最简单的意思是as.data.frame(aa)如果有效的话.所以R的基础包中的一个函数会很棒. sapply(aa,“length< - ”,max(lengths(aa)))实际上有四个函数. 一个例子如下所示. 输入:

aa <- list(A=c(1, 3, 4), B=c(3,5,7,7,8))

输出:

A B
1 3
3 5
4 7
NA 7
NA 8

A和B是data.frame的colnames.

一个答案是sapply(aa,'[‘,seq(max(sapply(aa,length)))),但它也很复杂.

参考:

> How to convert a list consisting of vector of different lengths to a usable data frame in R?
> Combining (cbind) vectors of different length

最佳答案
我们可以用

data.frame(lapply(aa, "length<-", max(lengths(aa))))

转载注明原文:将具有各种长度向量的列表转换为R中的data.frame的最简单方法 - 代码日志