【发布时间】:2017-12-01 15:03:59
【问题描述】:
我收到了一个使用可怕的<<- 的函数。我有什么办法可以将它沙箱化,这样它就不会改变全球环境?
例如,我想找到一些东西,这样我就可以运行 f() 而不改变 x 的值:
x <- 0
f <- function() x <<- 1
f()
x
# [1] 1
我尝试在已经定义了值的环境中对其进行评估:
local({
x <- 2
f()
})
但这似乎不起作用。有没有办法让我把它附上来保护地球环境?
【问题讨论】:
-
用“
-
此外,如果您获得的代码或多或少是独立的,您可以将其包装在一个包中并仅导出您需要的功能,那么
x应该在包命名空间中分配,除非导出。这将是最干净的解决方案。 -
..或创建一个包含所有对象的 RDS/RData 文件,创建一个新会话,首先加载函数,然后加载二进制文件
-
@amonk,代码位于生产环境中使用的包中。更改此代码需要在服务器端进行更改,我还没有准备好。
标签: r