【发布时间】:2017-02-01 16:26:47
【问题描述】:
这是我希望的一些数据和最终结果。我有许多 dfs(例如 2 个),我想将它们构建为列表。示例更好地解释它:
names <- as.yearmon(seq(as.Date("2010-01-01"), to=as.Date("2010-05-01"), by="month"))
names
df1 <- data.frame(X1 = c(1,2,3,4,5), X2 = c(1,2,3,4,5), X3 = c(1,2,3,4,5))
rownames(df1) <- names
df2 <- data.frame(Y1 = c(10,20,30,40,50), Y2 = c(10,20,30,40,50), Y3 = c(10,20,30,40,50))
rownames(df2) <- names
FullList <- list()
length(FullList) <- 5
names(FullList) <- names
FullList[[1]][[1]] <- df1[match(names(FullList)[1], rownames(df1)), ]
FullList[[1]][[2]] <- df2[match(names(FullList)[1], rownames(df2)), ]
FullList[[2]][[1]] <- df1[match(names(FullList)[2], rownames(df1)), ]
FullList[[2]][[2]] <- df2[match(names(FullList)[2], rownames(df2)), ]
FullList[[3]][[1]] <- df1[match(names(FullList)[3], rownames(df1)), ]
FullList[[3]][[2]] <- df2[match(names(FullList)[3], rownames(df2)), ]
FullList[[4]][[1]] <- df1[match(names(FullList)[4], rownames(df1)), ]
FullList[[4]][[2]] <- df2[match(names(FullList)[4], rownames(df2)), ]
FullList[[5]][[1]] <- df1[match(names(FullList)[5], rownames(df1)), ]
FullList[[5]][[2]] <- df2[match(names(FullList)[5], rownames(df2)), ]
因此,来自 2 个或更多数据帧的列表最终会得到列表,通用名称作为主列表名称。最终结果应该类似于FullList,实现这一目标的最佳方法是什么?
【问题讨论】:
-
数据帧是列表。也许你只想要
unclass?目前,您的列表中的元素仍然是数据框。那是你想要的吗? -
忽略你想要的数据结构的可怕性,这是实现该格式的一种简单方法:
FullList = mapply(function(x, y) list(x, y), split(df1, rownames(df1)), split(df2, rownames(df2)), SIMPLIFY = F)这将替换FullList <- list()行及其以下的所有代码 -
感谢 cmets,也许我必须重新考虑我的结构。我有很多不同的东西,它们都是按日期排序的,我认为首先列出一个日期可以让事情井井有条。这些dfs也可以是矩阵或向量或其他东西。