【发布时间】:2015-05-07 20:37:13
【问题描述】:
安装我的自定义 R 包代码后,它会停止工作吗?为什么?
详细来说,我有一个很小的 R 包goEnrichment(点击查看 Github 存储库)。 R 包只包含两个函数和一些二进制数据。
在使用R CMD INSTALL goEnrichment 安装 R 包后,我还运行了两个测试 R 脚本。一个测试脚本失败,而另一个运行。
这两个脚本之间的唯一区别是,在工作版本中,我 require 是必要的库,source 是手动的函数文件,而在另一个失败的脚本中,我是 require 我的 goEnrichment 库。
请注意,这两个脚本都是直接从它们的目录goEnrichment/exec 启动的。
使用cd goEnrichment/exec && Rscript testGoEnrichment_works.R 开始工作测试。摘录:
# This is the WORKING version
require(GOstats)
require(GSEABase)
require(RMySQL)
source( "../R/goEnrichment.R" )
使用cd goEnrichment/exec && Rscript testGoEnrichment_fail.R 启动失败测试脚本。摘录:
# This version FAILS
require(goEnrichment)
我得到的错误对我来说有些无意义:
'dimnames' applied to non-array.
built R 包在两个平台上失败,即在 Debian Wheezy 64 和 R 3.0.2 和在 Mac OS X Yosemite 和 R 3.1.1。
我真的不知道为什么会这样。我使用Vim 检查了文件格式和意外字符。原因似乎也不是DESCRIPTION 文件,因为goEnrichment 所依赖的所有库都已导入。
有没有人知道是什么导致了这个非常奇怪的错误?非常感谢您的帮助。
【问题讨论】:
-
您的 NAMESPACE 文件中没有导入的任何函数。这可能是原因。您正在使用 roxygen2,因此在您的函数中使用
packageName::function应该在您记录/构建时将它们添加到 NAMESPACE。 -
感谢泰勒的努力。不幸的是,这并没有成功,我改用
packageName::function在我的函数中,但仍然得到错误。顺便说一句,在R CMD INSTALL goEnrichment之后,NAMESPACE 文件仍然没有改变。 - 有什么想法吗? -
您是否将更改推送到 GitHub?您是否重新运行
document或者您曾经使用什么将 roxygen 输出转换为正确的文档? -
亲爱的 Tyler,对不起,我忘记推送到 Github。我现在已经做到了。我确实重新运行了
roxygen2::roxygenise(),它没有触及NAMESPACE文件。 -
同时我发现,必须删除 NAMESPACE 文件才能让 Roxygen2 生成它。我这样做并添加了适当的
import和export字段。不幸的是,错误仍然存在。我把所有东西都推送到了 Github。你还有什么想法吗?