【发布时间】:2018-08-15 16:21:08
【问题描述】:
我正在尝试找到一种优雅的方式来处理 R 中的列表结构。特别是,在这种情况下,我想从列表中提取子元素,根据列表中的关联数据修改它们,并将它们连接成一个数据框。举个例子可能更容易:
mystruct <- structure(list(dataset1 = structure(list(data1 = structure(list(
a = c(1, 2, 3), b = c(4, 5, 6)), .Names = c("a", "b"), row.names = c(NA,
-3L), class = "data.frame"), data2 = c("a", "b", "c", "d", "e"
)), .Names = c("data1", "data2")), dataset2 = structure(list(
data1 = structure(list(a = c(7, 8, 9), b = c(10, 11, 12)), .Names = c("a",
"b"), row.names = c(NA, -3L), class = "data.frame"), data2 = c("f",
"g", "h", "i", "j")), .Names = c("data1", "data2"))), .Names = c("dataset1",
"dataset2"))
我可以像这样连接 data1 元素:
> mystruct %>% map_dfr(~.x$data1)
a b
1 1 4
2 2 5
3 3 6
4 7 10
5 8 11
6 9 12
但我想添加一个“数据集”列,该列由获取数据的列表元素的名称填充:
dataset a b
1 dataset1 1 4
2 dataset1 2 5
3 dataset1 3 6
4 dataset2 7 10
5 dataset2 8 11
6 dataset2 9 12
有没有办法用 tidyverse 很好地做到这一点?我也愿意接受 data.table 解决方案。
谢谢, 艾莉
【问题讨论】:
标签: r data.table tidyverse purrr