如何解决R:从两个列表创建一个数据框
我有以下对象,名为 elements
,如下所示:
$A
$A$stringValue
[1] "A1,A2,A3,A4"
$B
$B$stringValue
[1] "B1,B2"
我已尝试取消列出对象并使用 A1,A4
和 B1,B2
获取列表,但之后我无法将它们转换为数据帧。我想要的输出是一个看起来像这样的数据框:
Element SubElements
A A1
A A2
A A3
A A4
B B1
B B2
解决方法
试试这个代码
setNames(
rev(stack(lapply(lst,function(x) unlist(strsplit(unlist(x),","))))),c("Element","SubElements")
)
给出
Element SubElements
1 A A1
2 A A2
3 A A3
4 A A4
5 B B1
6 B B2
,
我找到了使用 lapply 和melt(重塑包)的解决方案。它为您提供了所需的输出,@ThomasIsCoding 是第一个,但我仍然想贡献 :)
output=reshape::melt(lapply(elements,function(x) strsplit(unlist(x),")))
output$L2=NULL
colnames(output)=c("Element","SubElements")
,
L <- list( A = c( "A1,A2,A3,A4"),B = c( "B1,B2" ) )
library( data.table )
rbindlist( lapply( L,strsplit," ),idcol = "Element" )
# Element V1
# 1: A A1
# 2: A A2
# 3: A A3
# 4: A A4
# 5: B B1
# 6: B B2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。