另一个初学者的问题。这是示例:
store <- as.numeric()
multi.fun <- function(x) { t <- x*2; return(t) }
main.fun <- function(x) { store[i] <- multi.fun(x)+x; sum(tail(store,2)) }
x <- 1:10
ret <- as.numeric()
for(i in 1:10) {
print(main.fun(x[i])); Sys.sleep(0.2)
}
是否可以在每次迭代时为store
对象分配值?
编辑:这意味着它将在函数内部求值,以便最后的sum(tail(..,2))将给出最终结果:
9 15 21 27 33 39 45 51 57
并且store[i] <- multi.fun(x)+x
会给出:
[1] 3 6 9 12 15 18 21 24 27 30
我认为您可能需要的是<<-
运算符,该运算符使您可以在Global环境中访问对象(在这种情况下)。
主要功能写为:
main.fun <- function(x) { store[i] <<- multi.fun(x)+x; sum(tail(store,2)) }
您的流程可以完成您想要的操作:
store <- as.numeric()
multi.fun <- function(x) { t <- x*2; return(t) }
main.fun <- function(x) { store[i] <<- multi.fun(x)+x; sum(tail(store,2)) }
x <- 1:10
ret <- as.numeric()
for(i in 1:10) {
print(main.fun(x[i])); Sys.sleep(0.2)
}
输出:
[1] 3
[1] 9
[1] 15
[1] 21
[1] 27
[1] 33
[1] 39
[1] 45
[1] 51
[1] 57
但是,在Global环境中使用函数更改对象通常不是一个好主意,因为它易于产生错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句