我需要从外部文件加载自定义函数,但不会产生副作用。
目前,我正在这样做:
src <- "function(x,y) { return(x + y) }"
# parse the source
ptree <- parse(text=src)
# execute the evaluation using a data.frame as environment (like a sandbox)
f <- eval(ptree, envir=data.frame())
if(!is.function(f))
stop('The given source does not contain a valid function')
f(1,1)
这样,“恶意”代码不会影响当前环境,例如:
src <- "a <- 1"
因此,函数"a"
不会更改现有变量。eval
你觉得这有什么缺点吗?
有没有更好的方法?
提前致谢