使用 R 的 devtools 库函数“安装”时如何保留源文件

irr*_*rom 5 debugging r devtools r-package

我正在尝试从源代码构建一个 R 包 (DESeq2),以便我可以调试它。我已经安装了所需的所有依赖项,并且正在按照 Hillary Parker 的说明创建 R 包。我正在使用 R-3.4.2 在 CentOS 6.6 上运行它。

我跑:

library("devtools")
install("DESeq2", keep_source=TRUE)
Run Code Online (Sandbox Code Playgroud)

它将它安装在我所有其他 R 库的目录中。当我看着安装DESeq2库它丢失了所有DESeq2/R/*.RDESeq2/src/*.cpp文件。

问题:这些文件在哪里,为什么没有安装?这似乎不是预期的行为。

R Y*_*oda 6

出于效率原因(延迟加载),R 对已安装的包使用二进制数据库格式将对象打包为类似数据库的文件格式。这些数据库文件(*.rdb*.rdx)存储在包安装路径的 R 子文件夹中(请参阅?lazyLoad)。

即使

  • 您正在寻找正确的位置来找到已安装的包(.libPaths()在 R 中使用以查找安装文件夹)
  • 并且您已经安装了带有源代码的软件包(就像您所做的或通过install.packages("a_CRAN_package", INSTALL_opts = "--with-keep.source")

你不会在那里的 R 文件夹中找到 R 文件。

您可以通过从包中选择一个函数名称并将其打印在控制台上来验证源代码是否可用。如果您可以看到源代码(带注释),则可以使用包源(R 文件):

print(DeSeq2::any_function)

要使源代码可用于调试和堆栈跟踪,您可以在文件中或通过环境变量设置选项keep.source.pkgs = TRUE(请参阅 参考资料?options.Rprofile

keep.source.pkgs:

至于keep.source,仅在安装包时使用。默认为 FALSE,除非环境变量 R_KEEP_PKG_SOURCE 设置为 yes。

注意:源代码仅适用于新安装和更新的软件包(不适用于已安装的软件包!)。

更多详情请参见:https : //yetanothermathprogrammingconsultant.blogspot.de/2016/02/r-lazy-load-db-files.html