如何在 R 中创建乘以 X 和 X 的嵌套 for 循环?
How do I make a nested for loop in R that multiples X & X?
所以我正在尝试做一个嵌套的 for 循环,它将 1:100 与 1:100 相乘(10,000 种可能的组合)。所以 1*1, 1*2 ... 1* 100。一旦达到 100,我希望它重复,所以 2*1, 2*2, 2*100.
注意:我需要使用 for 循环来执行此操作
table<-matrix(ncol=3, nrow=100*100)
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i,] <- c(i,z,answer)
}
}
上面是我的代码。这似乎是一个简单的修复,但我遗漏了一些东西..
我们可以使用outer
out <- outer(1:100, 1:100)
它可以转换为 3 列 data.frame 和 melt
library(reshape2)
out2 <- melt(out)
在for
循环中,我们需要
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i, z] <- answer
}
}
table[i, z] <- answer
哪里
table <- matrix(nrow = 100, ncol = 100)
检查输出
all.equal(out, table)
#[1] TRUE
如果我们需要 'i', 'z'
out2 <- transform(expand.grid(i = 1:100, z = 1:100), answer = i * z)
或 crossing
library(tidyr)
library(dplyr)
crossing(i = 1:100, z = 1:100) %>%
mutate(answer = i * z)
# A tibble: 10,000 x 3
# i z answer
# <int> <int> <int>
# 1 1 1 1
# 2 1 2 2
# 3 1 3 3
# 4 1 4 4
# 5 1 5 5
# 6 1 6 6
# 7 1 7 7
# 8 1 8 8
# 9 1 9 9
#10 1 10 10
# … with 9,990 more rows
或在for
循环中
table1 <- c()
for(i in 1:100) {
for(z in 1:100){
table1 <- rbind(table1, c(i, z, i * z))
}
}
所以我正在尝试做一个嵌套的 for 循环,它将 1:100 与 1:100 相乘(10,000 种可能的组合)。所以 1*1, 1*2 ... 1* 100。一旦达到 100,我希望它重复,所以 2*1, 2*2, 2*100.
注意:我需要使用 for 循环来执行此操作
table<-matrix(ncol=3, nrow=100*100)
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i,] <- c(i,z,answer)
}
}
上面是我的代码。这似乎是一个简单的修复,但我遗漏了一些东西..
我们可以使用outer
out <- outer(1:100, 1:100)
它可以转换为 3 列 data.frame 和 melt
library(reshape2)
out2 <- melt(out)
在for
循环中,我们需要
for (i in 1:100) {
for (z in 1:100){
answer<-i*z
table[i, z] <- answer
}
}
table[i, z] <- answer
哪里
table <- matrix(nrow = 100, ncol = 100)
检查输出
all.equal(out, table)
#[1] TRUE
如果我们需要 'i', 'z'
out2 <- transform(expand.grid(i = 1:100, z = 1:100), answer = i * z)
或 crossing
library(tidyr)
library(dplyr)
crossing(i = 1:100, z = 1:100) %>%
mutate(answer = i * z)
# A tibble: 10,000 x 3
# i z answer
# <int> <int> <int>
# 1 1 1 1
# 2 1 2 2
# 3 1 3 3
# 4 1 4 4
# 5 1 5 5
# 6 1 6 6
# 7 1 7 7
# 8 1 8 8
# 9 1 9 9
#10 1 10 10
# … with 9,990 more rows
或在for
循环中
table1 <- c()
for(i in 1:100) {
for(z in 1:100){
table1 <- rbind(table1, c(i, z, i * z))
}
}