您不需要循环,并且将大量数字矩阵放入数据框中只是为了将其视为矩阵是低效的(尽管您可能需要在按顺序完成所有数学运算后在最后创建一个数据框写入 CSV 文件)。
m.mean <- 1:1000
m.sd <- 1:1000/20
num.columns <- 500
x <- matrix(nrow=length(m.mean), ncol=num.columns,
data=rnorm(n=length(m.mean) * num.columns))
x <- x * cbind(m.sd)[,rep(1,num.columns)] + cbind(m.mean)[,rep(1,num.columns)]
kkk <- data.frame(m.mean=m.mean, m.sd=m.sd, unname(x))
write.csv(kkk, "kkk.txt")
要回答有关从 foreach 循环直接将结果分配给现有数据结构的原始问题,这是不可能的。foreach 包的并行后端设计为在单独的 R 进程中执行每个计算,因此每个都必须向父进程返回一个单独的对象,父进程使用.combine
提供给 foreach 的函数收集它们。您可以编写一个并行的 foreach 循环,将其直接分配给kkk
变量,但这不会产生任何影响,因为每个分配都将发生在单独的进程中,并且不会与主进程共享。