【问题标题】:Speed decrease in subsetting `data.table` when adding a bracket添加括号时子集`data.table`的速度降低
【发布时间】:2015-10-14 12:00:10
【问题描述】:

我最近注意到在一些旧代码中,我在对 data.table 进行子集化并重复执行函数(在我的例子中,计算相关矩阵)时包含了额外的方括号。所以,

# Slow way
rcorr(DT[subgroup][, !'Group', with=F])

# Faster way
rcorr(DT[subgroup, !'Group', with=F])

(区别在subgroup之后)。只是出于好奇,为什么会发生这种情况?有了额外的括号,data.table 是否必须执行一些额外的计算?

【问题讨论】:

  • 我认为this answer 应该会有所帮助,除了理查德的好回答。
  • 绝对!这是一个非常有帮助的答案,谢谢!

标签: r data.table


【解决方案1】:

这里有一个简单的解释:

# Slow way
rcorr(DT[subgroup][, !'Group'])

第二组括号是对DT的第二次操作,意思是DT[subgroup]从DT创建一个新的数据表,然后[, !'Group']对该数据表进行操作,创建另一个新的数据表。因此速度下降。

# Faster way
rcorr(DT[subgroup, !'Group'])

这种方式只在DT上运行,一次完成。

【讨论】:

  • 谢谢!我认为发生了类似的事情。
  • @Chris,它的工作原理与[ 在基础 R 中的工作前提相同,如果有帮助的话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
相关资源
最近更新 更多