带有 2 个变量/索引的嵌套 for 循环? [R]

问题描述 投票:0回答:1

我想合并我拥有的两个数据集。 我需要获取 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 个数据帧。

r loops for-loop nested
1个回答
0
投票

我会首先使用

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

© www.soinside.com 2019 - 2024. All rights reserved.