r - 将列表(列表转换为列表形式)重塑为数据框 - R
问题描述
让我有下面的列表(list2),其中列表的元素也是一个列表:
> dput(list2)
list(x = list(a = c(0.18, 0.7, 0.57, 0.17, 0.94), b = c(0.18,
0.7, 0.57, 0.17, 0.94)), y = list(a = c(0.18, 0.7, 0.57, 0.17,
0.94), b = c(0.18, 0.7, 0.57, 0.17, 0.94)), z = list(a = c(0.18,
0.7, 0.57, 0.17, 0.94), b = c(0.18, 0.7, 0.57, 0.17, 0.94)))
我在哪里生成了如下列表:
names1<-c("a","b")
names2<-c("x","y","z")
list1<-list()
list2<-list()
for(i in names1)
for(j in names2){{
set.seed(2)
list1[[i]]<-round(runif(5),2)
list2[[j]]<-list1
}}
我想将此列表重塑为以下数据框:
n1 n2 n3
1 x a 0.18
2 x a 0.70
3 x a 0.57
4 x a 0.17
5 x a 0.94
6 x b 0.18
7 x b 0.70
8 x b 0.57
9 x b 0.17
10 x b 0.94
11 y a 0.18
12 y a 0.70
13 y a 0.57
14 y a 0.17
15 y a 0.94
16 y b 0.18
17 y b 0.70
18 y b 0.57
19 y b 0.17
20 y b 0.94
21 z a 0.18
22 z a 0.70
23 z a 0.57
24 z a 0.17
25 z a 0.94
26 z b 0.18
27 z b 0.70
28 z b 0.57
29 z b 0.17
30 z b 0.94
我该如何重塑列表?我的原始列表比上面的例子大得多。
非常感谢。
解决方案
基本 R 选项
setNames(
`row.names<-`(rev(
do.call(
rbind,
Map(cbind,
Map(stack, list2),
n = names(list2)
)
)
), NULL),
paste0("n", 1:3)
)
给
n1 n2 n3
1 x a 0.18
2 x a 0.70
3 x a 0.57
4 x a 0.17
5 x a 0.94
6 x b 0.18
7 x b 0.70
8 x b 0.57
9 x b 0.17
10 x b 0.94
11 y a 0.18
12 y a 0.70
13 y a 0.57
14 y a 0.17
15 y a 0.94
16 y b 0.18
17 y b 0.70
18 y b 0.57
19 y b 0.17
20 y b 0.94
21 z a 0.18
22 z a 0.70
23 z a 0.57
24 z a 0.17
25 z a 0.94
26 z b 0.18
27 z b 0.70
28 z b 0.57
29 z b 0.17
30 z b 0.94
推荐阅读
- testing - 为什么消费者驱动的合同测试不起作用?
- javascript - 我如何将 Json 数据发布到我的状态 ReactJs
- python - python multiprocessing 创建一个带有多张工作表的excel文件
- android - 使用另一个片段膨胀类片段重复 ID、标记 null 或父 ID 时出错
- javascript - 对象序列化问题
- sql - 从 varchar 转换日期和/或时间
- netbeans-platform - 我想在两个日期之间从 mysql 表中查询数据
- php - 多台服务器上的 PHP fifo 队列系统
- python - 找到满足条件的数据点时列出 IndexError
- embedded - 微处理器如何分类