gpt4 book ai didi

r - data.table 滞后运算符抛出错误

转载 作者:行者123 更新时间:2023-12-02 02:19:51 27 4
gpt4 key购买 nike

您好,我正在尝试按组 ID 创建一个包含滞后变量的 data.table。某些 id 在 data.table 中只有 1 行,在这种情况下,滞后的移位运算符会给出错误,但引导运算符工作正常。这是一个例子

dt = data.table(id = 1, week = as.Date('2014-11-11'), sales = 1)
lead = 2
lag = 2
lagSalesNames = paste('lag_sales_', 1:lag, sep = '')
dt[,(lagSalesNames) := shift(sales, 1:lag, NA, 'lag'), by = list(id)]

这给了我以下错误

All items in j=list(...) should be atomic vectors or lists. If you are trying something like j=list(.SD,newcol=mean(colA)) then use := by group instead
(much quicker), or cbind or merge afterwards.

但是如果我用铅尝试同样的事情,效果很好

dt[,(lagSalesNames) := shift(sales, 1:lag, NA, 'lead'), by = list(id)]

如果 data.table 超过 1 行,例如,它似乎也可以正常工作。您可以尝试以下 2 行,效果很好

dt = data.table(id = 1, week = as.Date(c('2014-11-11', '2014-11-11')), sales = 1:2)
dt[,(lagSalesNames) := shift(sales, 1:lag, NA, 'lag'), by = list(id)]

我在 R 版本 3.1.0 的 Linux 机器上使用 data.table 版本 1.9.5。任何帮助将不胜感激。

谢谢,阿信

最佳答案

感谢您的报告。现在已通过 #1014 修复了此问题(问题 commit #1722 )在 data.table v1.9.5 中。

现在按预期工作:

dt
# id week sales lag_sales_1 lag_sales_2
# 1: 1 2014-11-11 1 NA NA

关于r - data.table 滞后运算符抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28053500/

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