【发布时间】:2012-03-30 00:38:01
【问题描述】:
我想改造下面的嵌套for循环
first <- c(1, 2, 3)
second <- c(1, 2, 3)
dummy = matrix(double(), len(first), len(second))
c <- list()
c$sum <- dummy
c$times <- dummy
for (i in 1:len(first)) {
for (j in 1:len(second)) {
c$sum[i, j] <- first[i] + second[j]
c$times[i, j] <- first[i] * second[j]
}
}
c
使用 foreach 进入代码并获得相同的矩阵列表作为结果。我尝试了很多不同的东西,但最接近的“结果”是:
x <- foreach(b = second, .combine = "cbind") %:% foreach(a = first, .combine = "c") %do% {
c <- list()
c$sum <- a+b
c$times <- a*b
out <- c
}
x
如何使用 foreach 正确获取此矩阵列表?
编辑:一种可能性是使用结果并在调用 foreach 后对其进行转换:
res <- list()
res$sum <- x[rownames(x)=="sum", ]
rownames(res$sum) <- NULL
colnames(res$sum) <- NULL
res$times <- x[rownames(x)=="times", ]
rownames(res$times) <- NULL
colnames(res$times) <- NULL
res
如何对 foreach 进行“参数化”,从而无需转换结果?
【问题讨论】: