【发布时间】:2016-09-25 06:26:31
【问题描述】:
在 Python 中,假设我们有:
lib.py:
def myFunction():
...
main.py:
import lib
lib.myFunction()
这样myFunction 就在模块lib 中,不会污染全球环境。
但是,在 R 中,要使用 myFunction:
lib.R:
myFunction <- function(...) {...}
main.R:
source("lib.R")
myFunction()
这样myFunction 就在全局环境中。如果lib.R有其他的功能,都会被倾倒到全局环境中,这是非常不可取的。
我的问题是:R中有没有办法在不污染全局环境的情况下在其他文件中“导入”用户定义的函数?
我想写一个 R 包可能会缓解这个问题,但就我而言,编写一个完整的包是不值得的。
【问题讨论】:
-
您可以使用
sys.source()将函数加载到全局环境以外的环境中,但执行起来不会很有趣。你最好写一个包。如果这正是您所追求的行为,不确定是什么让您认为不值得。 -
我没用过,不过你可以看看@klmr 提供的模块包
-
有关它的讨论请参见此处:stackoverflow.com/q/15789036/324364
-
两个选项:分配到特定环境或制作一个包。