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

Zhi*_*Jia 2 r list dataframe data-science

这里我有一个不同长度向量的列表.我想要一个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))
Run Code Online (Sandbox Code Playgroud)

输出:

A B
1 3
3 5
4 7
NA 7
NA 8
Run Code Online (Sandbox Code Playgroud)

A和B是data.frame的colnames.

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

参考:

  1. 如何将包含不同长度矢量的列表转换为R中的可用数据帧?

  2. 组合不同长度的(cbind)向量

akr*_*run 7

我们可以用

data.frame(lapply(aa, "length<-", max(lengths(aa))))
Run Code Online (Sandbox Code Playgroud)

  • 我们不知道OP认为什么是“简单”,但是用“setDT”代替“data.frame”保存了一些字符和操作。 (3认同)