【问题标题】:Error using dcast with multiple value.var使用具有多个 value.var 的 dcast 时出错
【发布时间】:2016-02-12 19:46:57
【问题描述】:

所以,我一直在学习如何使用data.table,我使用了??dcast上的示例,其中使用以下示例

dt = data.table(x=sample(5,20,TRUE), y=sample(2,20,TRUE), 
                z=sample(letters[1:2], 20,TRUE), d1 = runif(20), d2=1L) 

然后

# multiple value.var
dcast(dt, x + y ~ z, fun=sum, value.var=c("d1","d2"))

我得到了错误:

.subset2(x, i, exact = exact) 中的错误:下标超出范围 另外:警告消息:在 if (!(value.var %in% names(data))) { :
条件的长度 > 1,并且只使用第一个元素

这里是我的R版本信息:

> version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          2.2                         
year           2015                        
month          08                          
day            14                          
svn rev        69053                       
language       R                           
version.string R version 3.2.2 (2015-08-14)
nickname       Fire Safety

【问题讨论】:

  • 无法使用R 3.2.3data.table_1.9.6 重现错误
  • 在带有 data.table 1.9.7 的 R 3.2.3 上,我没有看到任何错误。仅供参考,multiple value.var 功能是在 1.9.6 中添加的:github.com/Rdatatable/data.table

标签: r casting data.table


【解决方案1】:

我遇到了同样的事情,真是令人沮丧。

答案/问题是您需要“强制” data.table dcast 函数,否则它将使用 reshape2 函数

我成功的唯一方法是按如下方式运行 dcast:

# multiple value.var
data.table::dcast(dt, x + y ~ z, fun=sum, value.var=c("d1","d2"))

【讨论】:

  • 这也可以通过仅加载data.table 库或在reshape2 之前加载data.table 来避免。这个问题特别烦人,因为只有在您加载了reshape2 然后 data.table 时才会出现问题,这意味着它通常不是问题
  • 这也是正确的。如果功能掩盖了其他功能,包加载顺序可能会导致很多问题......可能会令人沮丧
  • 我已经先加载了data.table然后reshape2,但是问题依然存在,@K.J.J.K 回答是我的选择直到现在。
猜你喜欢
  • 2021-11-16
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2018-10-08
  • 2020-05-11
  • 2018-07-18
  • 2018-05-27
相关资源
最近更新 更多