【发布时间】:2015-12-10 20:00:02
【问题描述】:
在separate question earlier today 中,我询问了如何将嵌套列表展平为数据框中的一行。我希望进一步了解如何在数据框中操作我的列表,这次是通过在数据框中垂直扩展列表,添加新行来容纳数据。
在这种情况下,我希望摆脱这种结构:
CAT COUNT TREAT
A 1,2,3 Treat-a, Treat-b
B 4,5 Treat-c,Treat-d,Treat-e
到这个结构:
CAT COUNT TREAT
A 1 Treat-a
A 2 Treat-b
A 3 NA
B 4 Treat-c
B 5 Treat-d
B NA Treat-e
生成测试(源)数据的代码:
df<-data.frame(CAT=c("A","B"))
df$COUNT <-list(1:3,4:5) # as numbers
df$TREAT <-list(paste("Treat-", letters[1:2],sep=""),paste("Treat-", letters[3:5],sep=""))
我尝试以类似于我之前问题的答案的方法使用 CBIND,但由于多个列表之间的值数量不同,它失败了。感谢您在我尝试掌握这些基本操作任务时的耐心等待。
【问题讨论】:
-
蒂姆,我知道你不是在追求性能,但我很想知道我分享的功能如何满足你的需求。这些相关问题的公认答案都做了您可能不想要的事情。例如,此处接受的答案将所有列转换为因子。对您的其他问题的接受答案只是将
lists 转换为矩阵(与ncol核对结果以查看您实际最终得到多少列。换句话说,即使它看起来像创建了一个@ 987654327@ 有 7 列,生成的data.frame只有 3 列)。谢谢!
标签: r