【发布时间】:2015-07-07 18:06:19
【问题描述】:
We stumbled upon some strange behaviour trying to expand a 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 Machine Learning Essentials得到了这个例子的语法)
编辑
所以问题似乎出在rep 而不是data.table。 rep 的帮助页面显示参数 times:
一个整数向量,如果长度为length(x),则给出重复每个元素的(非负)次数,如果长度为1,则重复整个向量。
第二个data.table 创建的times 的长度与引发错误的x 不同。
【问题讨论】:
-
我没有错误。您使用的是什么版本的 R 和 R Studio。
-
@MikeWise:R 版本 3.1.1,RStudio 版本 0.99.441 - 可能是这样吗?
-
我使用的是 R 版本 3.1.3,RStudio 版本 0.99.447。
-
我的 data.table 也是用 3.1.2 版构建的
-
奇怪的是我没有错误
标签: r data.table