R Cronbach的alpha - rbindlist错误

时间:2015-12-23 00:55:07

标签: r data.table

我是R.的新手。我正在尝试为数据集计算Cronbach的alpha(来自psych包)。数据集如下所示:

R> belong_data
      belong.q1 belong.q2 belong.q3 belong.q4 belong.q5
   1:        NA        NA        NA        NA        NA
   2:         5         5         5         5         5
   3:        NA        NA        NA        NA        NA
   4:         5         5         4         5         5
   5:         4         5         4         3         3

我收到以下错误:

R> alpha(belong_data)
Error in rbindlist(l, use.names, fill) : 
  Item 2 of list input is not a data.frame, data.table or list

我不明白rbindlist调用的来源或如何提供正确的数据结构。数据集本身(“belongs_data”)是data.frame。不确定是什么问题。

1 个答案:

答案 0 :(得分:3)

更新:发生此问题是因为psych::alpha创建了matrix并绑定了尝试将该矩阵绑定到输入data.table。但是,rbind(内部调用rbindlist)for data.table目前只处理list / data.frame / data.table个输入。

data.tables的

rbind现在首先将非data.table列表元素强制转换为data.tables,然后在内部调用rbindlistThis commit解决了这个问题,应该从v1.9.8开始提供。来自NEWS

  
      对于data.tables,
  1. rbind现在在调用rbindlist之前首先强制对data.tables进行非列表输入,以便data.tables和matrices的绑定列表按预期工作,与base的rbind一致, #1626。感谢@ems在SO上报告here
  2.   

这看起来像一个可重现的data.table错误。我提交了here。谢谢发帖!

require(psych)
require(data.table)
> DT = data.table(a=1:5,b=6:10)
> alpha(DT)
Error in rbindlist(l, use.names, fill, idcol) : 
  Item 2 of list input is not a data.frame, data.table or list
> setDF(DT)
> alpha(DT)  # works

> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 15.10

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8      
 [8] LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.7 psych_1.5.8     

loaded via a namespace (and not attached):
[1] parallel_3.2.2 mnormt_1.5-4  
>