我想合并我拥有的两个数据集。 我需要获取 27 * 27 = 729 个数据帧。我想将这些数据帧保存在列表中(输出)。
#data sets
R1 <- as.data.frame(expand.grid(rep(list(0:2), 3)))
R2 <- as.data.frame(expand.grid(rep(list(0:2), 3)))
out_list <- list()
for (i in 1:27) {
for (j in 1:27) {
output <- rbind(R1[i, ], R2[j, ])
}
}
如何正确运行这个 for 循环?
输出对象必须包含 729 个数据帧。
我会首先使用
expand.grid()
创建 1:27
和 1:27
的所有组合。结果的每一行都将是嵌套 for 循环中的 i
和 j
对。您现在没有做的最重要的事情是将结果保存在您创建的列表中。在循环中,您每次都会覆盖同一个对象,而不累积结果。这样做的好处之一是,很容易看出正在使用 i
和 j
的哪些值,因为列表的第 i
元素与 i
的第 eg
行相对应。
#data sets
R1 <- as.data.frame(expand.grid(rep(list(0:2), 3)))
R2 <- as.data.frame(expand.grid(rep(list(0:2), 3)))
eg <- expand.grid(1:27, 1:27)
out_list <- vector(mode="list", length=nrow(eg))
for(i in 1:nrow(eg)){
out_list[[i]] <- rbind(R1[eg[i,1], ], R2[eg[i,2], ])
}
创建于 2024-01-14,使用 reprex v2.0.2