这里我有一个包含不同长度向量的列表,我希望得到一个数据框。在 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是数据框中的列名。
一种答案是sapply(aa,'[',seq(max(sapply(aa,length))))
,但这也很复杂。
参考:
data.frame(lapply(aa, "length<-", max(lengths(aa))))
来使它更加紧凑。与sapply(aa, length)
相比,它也更快。 - akrunlibrary(stringi); stri_list2matrix(aa)
,但字符元素需要转换为numeric
。我不确定simple
是否对你来说意味着compact
的代码。 - akrun