假设我们有这样一个列表:
l <- list()
l[[1]] <- list()
l[[2]] <- list()
l[[3]] <- list()
names(l) <- c("A", "B", "C")
l[[1]][[1]] <- data.frame(6)
l[[1]][[2]] <- data.frame(3)
l[[1]][[3]] <- data.frame(8)
l[[1]][[4]] <- data.frame(7)
l[[2]][[1]] <- data.frame(5)
l[[2]][[2]] <- data.frame(4)
l[[2]][[3]] <- data.frame(7)
l[[2]][[4]] <- data.frame(9)
l[[3]][[1]] <- data.frame(1)
l[[3]][[2]] <- data.frame(6)
l[[3]][[3]] <- data.frame(2)
l[[3]][[4]] <- data.frame(8)
names(l[[1]]) <- c("aa", "bb", "cc", "dd")
names(l[[2]]) <- c("aa", "bb", "cc", "dd")
names(l[[3]]) <- c("aa", "bb", "cc", "dd")
我想创建一个包含4个元素的列表l2
:aa
、bb
、cc
和dd
.这些元素中的每一个都是数据帧,其中包含列表l
中的aa
、bb
、cc
和dd
的值,以及一个ID变量,该变量指示元素是否来自列表l
中的A
、B
或C
元素.因此,如果我们从头开始构建最终结果,它将如下所示:
l2 <- list()
l2[[1]] <- data.frame(Value = c(6, 5, 1), ID = c("A", "B", "C"))
l2[[2]] <- data.frame(Value = c(3, 4, 6), ID = c("A", "B", "C"))
l2[[3]] <- data.frame(Value = c(8, 7, 2), ID = c("A", "B", "C"))
l2[[4]] <- data.frame(Value = c(7, 9, 8), ID = c("A", "B", "C"))
names(l2) <- c("aa", "bb", "cc", "dd")
然而,我不能从头开始构建它,而是必须"reshape "l
到l2
.最好的方法是什么?首选的解决方案是purrr
.