【问题标题】:Using `:=` from data.table when data.table package is not loaded?未加载 data.table 包时使用 data.table 中的`:=`?
【发布时间】:2016-02-12 00:13:50
【问题描述】:

我想在不加载 data.table 的情况下使用 data.table 中的 := 运算符。例如对于下面的data.table,我想添加另一个名为error的列:

DT <- data.table::data.table(station = rep(1:1,52560), mod = rnorm(1*52560),obs = rnorm(1*52560))

如果我做以下一切顺利,但是,我很困惑不参考包data.table(未加载data.table库)它是如何工作的?!

DT[ , `:=`(error  = mod - obs)]

如何使用 data.table::::= 重写以上行?!!

【问题讨论】:

  • 如果不使用数据表对象的任何功能,创建数据表对象的目的是什么
  • 如果你想包含对 data.table 函数的所有引用,你还需要[.data.table。但我同意 rawr,只需加载包即可。
  • 如果您要在包中使用 data.table 语法,我建议您导入整个包。我已经做到了。更安全,更省心。
  • @RichardScriven 我正在导入包,我别无选择,因为如果我不导入,data.table 将无法工作。单独导入会解决这个问题吗?
  • @newbie - data.table::set(DT, i=NULL, j="blah", value=1) - 访问列名可能需要[.data.table

标签: r data.table packages loading require


【解决方案1】:

不确定我是否理解正确,但关于:

我将在另一个包中使用它,最好不要加载 data.table。 – 新手

我正在导入包,我别无选择,因为如果我不导入 data.table 将无法工作。单独进口会解决这个问题吗? – 新手

是导入 data.table 而不是从你的包中依赖它。您可能已经尝试过了,但由于这个常见问题,它不起作用。在此处查看解决方案:

Using data.table package inside my own package

【讨论】:

  • 我已经将 data.table 导入到我的包中。我知道对于一些命令,如 as.data.table 我必须使用 data.table::as.data.table 但其他一些命令,如 DT[,:=(error = mod - obs)],它会无需我指定即可自动工作,它来自 data.table 包。这就是我不解的地方,为什么会这样?
  • 鉴于链接问题的详细信息,"import data.table" 的措辞过于不精确。您没有使用 data.table::as.data.table 中的前缀。我不遵循你的要求。为什么会发生什么?怀疑英语不是你的第一语言。请花 2 小时阅读 github.com/Rdatatable/data.table/wiki/Support 及其所有链接并确认您已阅读完毕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 2012-05-18
相关资源
最近更新 更多