在 For 循环中存储值

Tim*_*ert 4 loops r

我在 R 中有一个 for 循环,我想在其中存储每个计算的结果(对于循环的所有值)。在 for 循环中,调用了一个函数,此时输出存储在变量 r 中。但是,这在每个连续循环中都会被覆盖。如何通过函数存储每个循环的结果并在之后访问它?

谢谢,

例子

for (par1 in 1:n) {
var<-function(par1,par2)
c(var,par1)->var2
print(var2)
Run Code Online (Sandbox Code Playgroud)

所以 print 返回 var2 的每个实例,但在 var2 中只保存最后 n 的值..有没有办法获取数据数组或其他东西?

TWL*_*TWL 8

初始化一个空对象,然后通过索引分配值

a <- 0
for (i in 1:10) {
     a[i] <- mean(rnorm(50))
}

print(a)
Run Code Online (Sandbox Code Playgroud)

编辑:

要包含具有两个输出变量的示例,在最基本的情况下,创建一个空矩阵,其列数对应于您的输出参数,行数与迭代次数相匹配。然后通过索引 for 循环中的行位置将输出保存在矩阵中:

n <- 10
mat <- matrix(ncol=2, nrow=n)

for (i in 1:n) {
    var1 <- function_one(i,par1)
    var2 <- function_two(i,par2)
    mat[i,] <- c(var1,var2)
}

print(mat)
Run Code Online (Sandbox Code Playgroud)

迭代号i对应于mat对象中的行号。所以没有必要明确地跟踪它。

然而,这只是为了说明基础。一旦理解了上述内容,使用@eddi 给出的优雅解决方案会更有效率,尤其是在您处理许多输出变量的情况下。

  • 你永远不应该在循环中增长一个对象,因为这会让你的代码变慢。你应该将它预先分配到正确的大小(就像你在第二个例子中所做的那样):`a &lt;- numeric(10)` (2认同)