R:如何在foreach中使用“get / assign”函数?

时间:2017-12-06 19:31:43

标签: r

我正在尝试在“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

1 个答案:

答案 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)
}