【问题标题】:Local package dependency to R data.table ":="本地包依赖于 R data.table ":="
【发布时间】:2022-01-15 01:52:44
【问题描述】:

我有一个本地 R 包,一些函数正在使用 data.table 操作。当我安装包时,它会安装 data.table,因为它是一个依赖项。但是,我无法弄清楚包装中的这一部分。

这个在函数中工作:

dt=data.table::as.data.table(dt)

所以它将 dt 转换为 data.table

这个不行

dt[SuperDummyDate == '',SuperDummyDate := NA]

包找不到“:=”是一个数据表函数。因为它在[]中,所以我不能添加data.table::..

我在函数中尝试了 require(data.table) ,但还是不行。

提前致谢!

【问题讨论】:

  • 你读过rdatatable.gitlab.io/data.table/articles/…吗?您是否在包本身的某处定义了.datatable.aware=TRUE? (只有在 Suggests: 而不是 Imports: 中使用后者时才需要后者,但无论如何拥有它并没有什么坏处。
  • 我在命名空间中添加了 import(data.table) 并且它有效。非常感谢!

标签: data.table dependencies r-package


【解决方案1】:

data.table 应该导入到包的NAMESPACE 文件中:

import(data.table)

使用Roxygen,您可以在函数头中要求此导入,它将自动添加到NAMESPACE

#' Your function title & description
#'
#' @parameter data
#' @import data.table
#'
DTfunction <- function(data) {
  data[,newcol:=.SD[,1]]
}

加载函数后测试:

DTfunction(as.data.table(mtcars[,1:2]))

      mpg   cyl newcol
    <num> <num>  <num>
 1:  21.0     6   21.0
 2:  21.0     6   21.0
 3:  22.8     4   22.8
 4:  21.4     6   21.4
...

【讨论】:

  • 我已将 import(data.table) 添加到命名空间并开始工作。非常感谢!
  • @korayp,很高兴我能帮上忙。请考虑accepting the answer,以便其他人知道它有效。
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 2018-07-19
  • 2012-04-26
  • 2015-11-22
  • 2018-09-30
  • 1970-01-01
  • 2020-04-06
  • 2022-01-12
相关资源
最近更新 更多