R - 在循环的每次迭代中用其值替换变量

时间:2016-11-04 04:11:51

标签: r

R(来自SQL)有些新东西,尝试编写一个快速循环来生成一系列执行指定次数任务的函数(即对于函数2,执行2次,函数3 - > 3次等。)。

我的问题在于我使用迭代变量(在下面的代码中,' k')作为低级函数的一部分 - 因此,当我去评估随后生成的函数中的任何一个,它返回函数的值,该值是k的最后一个值(此处为4),无论我是否调用函数2,3或4。

因此,我的问题是如何替换' k'对于变量' k'当我生成较低级别的功能时?例如,在第一次迭代时,当k = 2时,我想要替换' 2'对于每次出现的' k'在较低级别的功能中,当稍后运行功能2时,它会看到' 2'的值,而不是' k'的最后一个值?

下面的代码(请注意,函数将评估的' x'值为1列,可变行矩阵):

x <- as.matrix(11:20)

for (k in 2:4) {

  actvfun <- NULL

  actvfun <- function(x) {

    actv <- NULL
    actvmtx <- NULL
    actvmtx <- as.matrix(x)

    for (j in 2:(k+1)) {

      actv <- rep(NA, length(x))

      for (i in j:length(x)) {

        actv[i] <- x[i - (j - 1)]

      }

      actvmtx <- as.matrix(cbind(actvmtx, actv))

    }

    assign(paste("lag0", k, "av", sep=""), actvmtx)
    return(apply(get(paste("lag0", k, "av", sep="")), 1, mean, na.rm=T))
    assign(paste("LAGTEST0", k, "AV", sep=""), apply(actvmtx, 1, mean, na.rm=T))
  }


  assign(paste("v5LAGTEST0", k, ".av", sep=""), actvfun)
}


v5LAGTEST02.av(x)
v5LAGTEST03.av(x)

最后两项是我正在运行的检查 - 目前都使用k = 4返回结果,而不是它们各自的值2和3。

非常感谢任何帮助 - 我知道循环在R中有点不受欢迎(因为&#39;分配&#39;,但我不确定如何实现变量函数名称的期望结果) ,所以我当然愿意接受新的建议!

谢谢,

内特

0 个答案:

没有答案