gpt4 book ai didi

r - 不能在同一个 data.table 表达式中使用 i.field 和 by=

转载 作者:行者123 更新时间:2023-12-04 09:10:16 25 4
gpt4 key购买 nike

连接两个数据表并使用 by= 时在同一个表达式中,每当我尝试使用 j 中内部 data.table 中的列时,我都会收到错误消息。我可以将事情分成两个单独的表达式,但这是额外的输入 - 并且在使用大型数据集时可能会影响性能

举个例子

require(data.table)
DT1 <- data.table(k1 = 1:2, k2 = c('a', 'a', 'a', 'b', 'b', 'c'), v1 = 1:6, key = 'k2')
DT2 <- data.table(k1 = c('a', 'b', 'c'), w1 = 3^(1:3), key = 'k1')

DT1[DT2, sum(v1*w1), by=k1] # fails complaining about being unable to find w1
DT1[DT2, sum(v1*i.w1), by=k1] # also fails with the same error
DT1[DT2][, sum(v1*w1), by=k1] # works

对于小数据集,加入然后分组的方法很好。但是,对于具有许多列的数据集,使用两个 data.tables 的所有列创建临时结果是一项重大负载(我的实际数据表大小大约为 1-2 Gb)。

虽然我可以通过这样做来减少所涉及的列数
DT1[DT2[,.(k1, w1)]][,sum(v1*w1),by=k1]

这消除了 data.tables 的一个重要值(value) - 不必经常指定数据集之间的关系。它还要求我记住在每次连接时在两个不同的地方指定一个列。

有什么明显的我遗漏了吗?

最佳答案

可能 duplicate question带有指向 data.table 功能请求的链接 #733 .

关于r - 不能在同一个 data.table 表达式中使用 i.field 和 by=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com