如何简化 R 中的嵌套循环
how to simplify nested loop in R
我有以下代码,任何人都可以建议一种不同的嵌套循环方法:
x <- c(1, 2,3)
y <- c(6, 7, 8, 9)
n <- 10
for (i in 1:3) {
for (j in 1:4) {
decisions <- rep(0, n)
for (k in 1:n) {
##a predefined function
decisions[k] <- pre_defined_funct(x[i], y[j])
percent[i,j] <- sum(decisions)/n
}}}
您发布的算法不依赖于n
和decision
,因为它们在简化后被抵消了。因此可以表示为:
x <- c(1, 2, 3)
y <- c(6, 7, 8, 9)
n <- 10
pre_defined_funct <- function(x, y) {
# stub
abs(sin(x + y))
}
prs <- expand.grid(x, y)
prs$percent <- pre_defined_funct(prs$Var1, prs$Var2)
library(reshape2)
dcast(prs, Var2 ~ Var1)
输出:
Var2 1 2 3
1 6 0.6569866 0.9893582 0.4121185
2 7 0.9893582 0.4121185 0.5440211
3 8 0.4121185 0.5440211 0.9999902
4 9 0.5440211 0.9999902 0.5365729
我有以下代码,任何人都可以建议一种不同的嵌套循环方法:
x <- c(1, 2,3)
y <- c(6, 7, 8, 9)
n <- 10
for (i in 1:3) {
for (j in 1:4) {
decisions <- rep(0, n)
for (k in 1:n) {
##a predefined function
decisions[k] <- pre_defined_funct(x[i], y[j])
percent[i,j] <- sum(decisions)/n
}}}
您发布的算法不依赖于n
和decision
,因为它们在简化后被抵消了。因此可以表示为:
x <- c(1, 2, 3)
y <- c(6, 7, 8, 9)
n <- 10
pre_defined_funct <- function(x, y) {
# stub
abs(sin(x + y))
}
prs <- expand.grid(x, y)
prs$percent <- pre_defined_funct(prs$Var1, prs$Var2)
library(reshape2)
dcast(prs, Var2 ~ Var1)
输出:
Var2 1 2 3
1 6 0.6569866 0.9893582 0.4121185
2 7 0.9893582 0.4121185 0.5440211
3 8 0.4121185 0.5440211 0.9999902
4 9 0.5440211 0.9999902 0.5365729