【发布时间】:2016-02-05 23:02:24
【问题描述】:
我希望应用函数调用的函数在全局范围内具有副作用,即影响全局范围内的变量。如您所见,这不起作用:
library(zoo)
test=1
rollapply(1:10, width=2, function(x) test=test+1)
# [1] NA NA NA NA NA NA NA NA NA
test
# 1
我希望每次调用function(x) 时都会增加测试,不幸的是,在执行rollapply 之后测试仍然是1。有没有可能解决这个问题?
【问题讨论】:
-
不是
NULL + 1给numeric(0)吗? -
您可以使用 '
-
assign接受环境参数,<<-搜索所有 parent.frames 直到它到达全局,如果它没有找到它将分配一个新值。 -
@bunk 可以在不使用 '
-
通常,如果你不得不问如何做到这一点,你不知道有更好的方法来实现你的实际目标。这就是为什么这个问题的标准答案是你不应该这样做。
标签: r apply side-effects