我经常想在全局环境下的环境中创建许多变量.这可以通过envir参数轻松完成sys.source- 如果由文件创建的所有变量都应该进入单个环境.
但我通常使用一个创建变量集的文件.一组应该进入一个环境,另一组进入另一个环境,依此类推.我不想将此文件拆分为多个文件,然后进行多次调用sys.source.
相反,我想要一个命令,让我更改默认环境以分配新变量.例如:
e <- new.env()
setDefaultEnvironment(e)
tmp <- 2
e$tmp # 2
.GlobalEnv$tmp # Error: object 'tmp' not found
Run Code Online (Sandbox Code Playgroud)
但这setDefaultEnvironment不是一个真正的命令.
在R中有没有安全的方法来做这种事情?
whu*_*ber 16
最明确的是:改变全球状态是危险的.从而:
e <- new.env()
with(e, {foo <- bar; foo2 <- bar2})
Run Code Online (Sandbox Code Playgroud)
将干净利落地完成这项工作,同时突出显示所涉及的环境.
jor*_*ran 10
也许有人可以对此进行改进,无需引用变量名称:
e <- new.env()
`%=%` <- function(x,y) {assign(x,y,envir = e)}
"d" %=% 5
e$d
[1] 5
Run Code Online (Sandbox Code Playgroud)
但这对我来说有点愚蠢.也许只是assign直接使用?也许更多的打字,但它可以做到你想要的更少的危险.
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |