在添加括号时,子集 "data.table "的速度降低了。

问题描述 投票:6回答:1

我最近注意到,在一些旧的代码中,当我在子集一个 data.table 并反复执行一个函数(在我的例子中,计算相关矩阵)。所以,

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

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

(不同的是在 subgroup). 只是出于好奇,为什么会出现这种情况?在多出的括号中,是否有 data.table 必须执行一些额外的计算?

r data.table
1个回答
6
投票

这里有一个简单的解释。

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

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

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

这种方式只对 DT,一气呵成。

© www.soinside.com 2019 - 2024. All rights reserved.