Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改R apply函数中的变量值?_R_Apply - Fatal编程技术网

如何更改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)