在包中使用data.table - 检查失败

时间:2017-11-28 17:28:37

标签: r package data.table

我想将data.tables用作我编写的包中的主干。

由于我不想一直使用::(并避免使用[:=运算符的并发症),因此我将data.table包含为取决于而不是在DESCRIPTION中导入以便能够直接使用所有dt函数。

如果我构建软件包一切正常但运行“检查”会导致错误(来自DTTest.Rcheck / 00install.out):

* installing *source* package ‘DTTest’ ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error : package ‘data.table’ required by ‘DTTest’ could not be found
Error: loading failed
Execution halted
ERROR: loading failed

此包中唯一的功能是

#' Creates a data.table
#'
#' @return a data.table
#' @export
#'
#' @examples
#' create_dt()
create_dt <- function() {
  dt <- data.table(x = 1:10)
  dt[, x_2 := x^2]
  return(dt[])
}

描述包含Depends: data.table,否则文件是标准的RStudio新包文件。

您可以在此处找到整个套餐:https://github.com/DavZim/DTTest

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在罗兰的一些有用的评论之后,我找到了解决问题的方法。它确实与我的.libPaths()相关,而不是与代码相关。

检查包时,R试图在.libPaths()中搜索第一个库内的包。碰巧的是,我有四条路径(/usr/local/.../usr/lib/R/site-library/usr/lib/R/library/home/user/R/x86_64-pc-linux-gnu-library/3.4),而data.table安装在最后一条路径中。

解决方案(更像是此阶段的解决方法)是在第一个中安装data.table。

为此,我使用管理员权限(在我的情况下为sudo R)执行了R并使用install.packages("data.table", lib = .libPaths()[1])安装了data.table。

现在检查通过了预期!