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;,但我不确定如何实现变量函数名称的期望结果) ,所以我当然愿意接受新的建议!
谢谢,
内特