替代 R 中的 import() 包?

Alternative to import() package in R?

我在 python 中使用 Rpy2 来调用 R,但由于某些原因我无法加载特定包 'rmgarch'。我已经在 R 中单独安装了它,当我将它导入 RStudio 时它可以工作,但无论出于何种原因,它只是不想在 rpy2 中工作,即使 rpy2 非常乐意导入其他包,例如 'rugarch','Matrix', 'zoo', 等等。它们都安装在同一个库中,这让我更加困惑。 我的问题是,你知道用 R 编码时 calling/importing 包的另一种方法吗?请注意,我可以导入任何其他包。我尝试使用 devtools,因为这是我能想到的唯一类似的东西,但它在那个宇宙中不存在。我正在使用 R 4.0.3。 Python 版本 3.7.6。在 Jupyter 中使用的一个例子是:

import rpy2
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
from rpy2.robjects.conversion import localconverter

utils.install_packages('rmgarch') #;utils.install_pa...rugarch,...
robjects.r('''
        library('rugarch')
        library('quantmod')
        library('forecast')
        library('rmgarch')
        f <- function(u) {
            l<-u
        }
        ''')

错误输出为:

RRuntimeError: Error in library("rmgarch") : there is no package called ‘rmgarch’

如果您不需要整个包,您可以使用 packagename::functionname(...).

调用单独的函数

RRuntimeError转发了一个R产生的错误,说没有包X,嵌入的R真的认为没有这个包。

如果观察到 RStudio 中嵌入的 R 和 Python 中嵌入的 R 之间的差异,那么它可以是:

  • 你(至少)在你的系统上安装了 2 个 R,它们每个 link 到不同的
  • R 设置为在两者之间的不同位置查找已安装的包(例如,环境变量 R_LIBS 可以做到这一点)。

在 RStudio 中:

installed.packages()["rmgarch", "LibPath"]

在Python/rpy2中:

tuple(robjects.r('.libPaths()'))

如果 Python/rpy2 中不存在 R studio 显示的路径,则 Python/rpy2 将无法加载 RStudio 可以加载的 R 包。