krl*_*mlr 2 r convenience-methods
是否有一个便利功能可以将对象导出到全局环境,可以从一个函数调用它来使对象全局可用?
我正在寻找类似的东西
export(obj.a, obj.b)
Run Code Online (Sandbox Code Playgroud)
这会表现得像
assign("obj.a", obj.a, .GlobalEnv)
assign("obj.b", obj.b, .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)
我知道<<-并且assign.我需要这个来重构旧的代码,这只是脚本的串联:
input("script1.R")
input("script2.R")
input("script3.R")
Run Code Online (Sandbox Code Playgroud)
script2.R使用结果script1.R,并script3.R可能使用来自1和的结果2.这会创建一个污染严重的命名空间,我想更改每个脚本
pollute <- the(namespace)
useful <- result
Run Code Online (Sandbox Code Playgroud)
至
(function() {
pollute <- the(namespace)
useful <- result
export(useful)
})()
Run Code Online (Sandbox Code Playgroud)
作为第一个廉价的对策.
只需写一个包装器:
myexport <- function(...) {
arg.list <- list(...)
names <- all.names(match.call())[-1]
for (i in seq_along(names)) assign(names[i],arg.list[[i]],.GlobalEnv)
}
fun <- function(a) {
ttt <- a+1
ttt2 <- a+2
myexport(ttt,ttt2)
return(a)
}
print(ttt)
#object not found error
fun(2)
#[1] 2
print(ttt)
#[1] 3
print(ttt2)
#[1] 4
Run Code Online (Sandbox Code Playgroud)
没有彻底测试,也不确定它是多么"安全".
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |