在r中写入函数(用于循环),不断替换以前存储的输出

在r中写入函数(用于循环),不断替换以前存储的输出,r,for-loop,R,For Loop,我写函数有困难。我有我需要它做的,但是对于每个循环,我需要答案来按行填充对象。但它不断替换最后的答案,只给我最后一组。我已经读了一些东西,但我不能理解它与我的功能,因为我是相当新的所有这一切。如果有人有任何建议,我将不胜感激 for(i in 1:N){ x <- matrix(as.numeric(fun[i,1:9]), ncol=1) res = cbind( log(fit$prior[1]) - (0.5*t(fit$means[1,])%*%sol

我写函数有困难。我有我需要它做的,但是对于每个循环,我需要答案来按行填充对象。但它不断替换最后的答案,只给我最后一组。我已经读了一些东西,但我不能理解它与我的功能,因为我是相当新的所有这一切。如果有人有任何建议,我将不胜感激

for(i in 1:N){
  x <- matrix(as.numeric(fun[i,1:9]), ncol=1)
  res = cbind(
    log(fit$prior[1]) - 
      (0.5*t(fit$means[1,])%*%solve(cov)%*%fit$means[1,]) + 
      (t(x)%*%solve(cov)%*%fit$means[1,]),
    log(fit$prior[2]) - (0.5*t(fit$means[2,])%*%solve(cov)%*%fit$means[2,]) + 
      (t(x)%*%solve(cov)%*%fit$means[2,]),
    log(fit$prior[3]) - (0.5*t(fit$means[3,])%*%solve(cov)%*%fit$means[3,]) + 
      (t(x)%*%solve(cov)%*%fit$means[3,]),
    log(fit$prior[4]) - (0.5*t(fit$means[4,])%*%solve(cov)%*%fit$means[4,]) + 
      (t(x)%*%solve(cov)%*%fit$means[4,]),
    log(fit$prior[5]) - (0.5*t(fit$means[5,])%*%solve(cov)%*%fit$means[5,]) + 
      (t(x)%*%solve(cov)%*%fit$means[5,]),
    log(fit$prior[6]) - (0.5*t(fit$means[6,])%*%solve(cov)%*%fit$means[6,]) + 
      (t(x)%*%solve(cov)%*%fit$means[6,]))
}
res
for(1:N中的i){

x您需要在循环中存储获取的不同值
res
。为此,您可以将
res
声明为列表,并为
res[[i]
中的
i
的每个值分配结果,如下所示:

res <- list()
for(i in 1:N){
  x <- matrix(as.numeric(fun[i,1:9]), ncol=1)
  res[[i]] <- cbind(
    log(fit$prior[1]) - 
      (0.5*t(fit$means[1,])%*%solve(cov)%*%fit$means[1,]) + 
      (t(x)%*%solve(cov)%*%fit$means[1,]),
    log(fit$prior[2]) - (0.5*t(fit$means[2,])%*%solve(cov)%*%fit$means[2,]) + 
      (t(x)%*%solve(cov)%*%fit$means[2,]),
    log(fit$prior[3]) - (0.5*t(fit$means[3,])%*%solve(cov)%*%fit$means[3,]) + 
      (t(x)%*%solve(cov)%*%fit$means[3,]),
    log(fit$prior[4]) - (0.5*t(fit$means[4,])%*%solve(cov)%*%fit$means[4,]) + 
      (t(x)%*%solve(cov)%*%fit$means[4,]),
    log(fit$prior[5]) - (0.5*t(fit$means[5,])%*%solve(cov)%*%fit$means[5,]) + 
      (t(x)%*%solve(cov)%*%fit$means[5,]),
    log(fit$prior[6]) - (0.5*t(fit$means[6,])%*%solve(cov)%*%fit$means[6,]) + 
      (t(x)%*%solve(cov)%*%fit$means[6,]))
}
res
res