【发布时间】:2017-11-28 17:28:36
【问题描述】:
我想在我编写的包中使用 data.tables 作为主干。
由于我不想一直使用::(并避免使用[ 和:= 运算符的复杂性),因此我将data.table 包含为Depends 而不是在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
这个包中唯一的函数就是this
#' 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[])
}
DESCRIPTION 包含Depends: data.table,否则文件是标准的 RStudio 新包文件。
你可以在这里找到整个包:https://github.com/DavZim/DTTest
任何想法如何解决这个问题?
【问题讨论】:
-
你试过
data.table::data.table(x = 1:10) -
将data.table放入Imports,将包导入NAMESPACE。这就是我所做的,它适用于我在 CRAN 上提供的一个包。
-
请学习编写 R 扩展。正确的语法是 import(data.table)。为什么要加引号?
-
我所做的只是将 data.table 添加到 DESCRIPTION 中的 Imports 并告诉 roxygen2 到
#' @import data.table。但是,您的包在我的系统上构建和加载都很好。这表明您的设置有问题,可能是您的.libPaths()。 -
请随时将此作为答案发布。
标签: r package data.table