【问题标题】:R's equivalent to Python's importing mechanismR 相当于 Python 的导入机制
【发布时间】: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
  • 两个选项:分配到特定环境或制作一个包。

标签: python r import


【解决方案1】:

如果导入两个函数名相同的库,可以使用libraryname::function(...)

这不会解决您的问题,但会确保您使用正确库中的正确函数。

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2014-10-31
    • 2017-09-10
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2019-07-14
    相关资源
    最近更新 更多