我正在尝试在“foreach”中使用“get / assign”功能。 这里有一个简化的案例:
a1,a2,a3,... an(n可以是任何预定义的数字)是保存在全局环境中的对象,b是用于存储对象的循环内的数组。
*更复杂的情况可能是a1,a2,a3,... a是大型矩阵,并尝试使用“get”加索引来检索单元格值,例如get(a1)[index]。 “sum”过程可能是基于数组b的更复杂的计算。
我的代码是:
c <- foreach (j = 1:3) %dopar% {
for (i in 1:n){
b[i] <- get(paste("a",i,sep=""))
}
sum(b)
}
我期待这样的结果:
for (j in 1:3) {
for (i in 1:3){
b[i] <- get(paste("a",i,sep=""))
}
c[i] = sum(b)
}
但是,尚未找到a1,a2,a3
答案 0 :(得分:-1)
我不认为你在foreach区域内get
一定有问题。这里有两个循环,因此不清楚创建b
的位置。对于两个代码块都是如此。此外,foreach
应为foreach(j=1:3)
尝试在b <- c()
声明之前添加for(i in 1:3)
。
library(foreach)
a1 <- 1
a2 <- 2
a3 <- 3
c <- foreach(j=1:3) %dopar% {
b <- c()
for (i in 1:3) {
b[i] <- get(paste("a",i,sep=""))
}
sum(b)
}