我想将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
任何想法如何解决这个问题?
答案 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。
现在检查通过了预期!