我们在尝试扩展 data.table 时偶然发现了一些奇怪的行为。下面的代码可以正常工作:
dt <- data.table(var1=1:2e3, var2=1:2e3, freq=1:2e3)
system.time(dt.expanded <- dt[ ,list(freq=rep(1,freq)),by=c("var1","var2")])
## user system elapsed
## 0.05 0.01 0.06
但使用以下data.table
set.seed(1)
dt <- data.table(var1=sample(letters,1000,replace=T),var2=sample(LETTERS,1000,replace=T),freq=sample(1:10,1000,replace=T))
使用相同的代码给出
Error in rep(1, freq) : invalid 'times' argument
我的问题
这可能是一个错误data.table
?
(我从这里得到了这个例子的语法R 机器学习基础知识)
Edit
所以问题似乎确实出在rep
并且不与data.table
。帮助页面rep
对于参数来说times
:
一个整数向量,如果长度为 length(x),则给出重复每个元素的(非负)次数;如果长度为 1,则给出重复整个向量的(非负)次数。
第二data.table
创造times
长度不同于x
这会引发错误。