如何更改R apply函数中的变量值?
我想在如何更改R apply函数中的变量值?,r,apply,R,Apply,我想在apply函数中使用索引号跟踪执行进度。这是我的尝试,但它不起作用(每次应用函数时,索引都从1.0开始)。如何解决此问题,即在apply函数中更改全局变量 > idx=1 > f<-function(x){ + idx=idx+1 + print(c("current progress", idx)) + return(1) + } > res=sapply(1:3,f) [1] "current progress" "2"
apply
函数中使用索引号跟踪执行进度。这是我的尝试,但它不起作用(每次应用函数时,索引都从1.0开始)。如何解决此问题,即在apply
函数中更改全局变量
> idx=1
> f<-function(x){
+ idx=idx+1
+ print(c("current progress", idx))
+ return(1)
+ }
> res=sapply(1:3,f)
[1] "current progress" "2"
[1] "current progress" "2"
[1] "current progress" "2"
>idx=1
>f res=sapply(1:3,f)
[1] “当前进度”“2”
[1] “当前进度”“2”
[1] “当前进度”“2”
这是因为函数终止时,函数中的变量赋值将丢失。正如李哲远正确地指出的那样,分配给全球环境解决了这一问题,因为这样,任务在终止时不会丢失
我更喜欢使用
assign()
函数,因为您可以明确地确定变量存储的位置(不总是的情况,如果像在示例中一样,您沿着数值向量1:3
进行迭代,为什么不直接使用它呢?
idx=1
f <- function(x){
assign('idx', idx+1, envir = globalenv())
print(c("current progress", idx))
return(1)
}
res=sapply(1:3,f)