R Cronbach's alpha -- rbindlist 错误

标签 r data.table

我是 R 新手。我正在尝试计算数据集的 Cronbach's 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 调用来自哪里或如何输入正确的数据结构。数据集本身(“belong_data”)是一个data.frame。不确定是什么问题。

最佳答案

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

data.tables 的

rbind 现在首先将非 data.table 列表元素强制到 data.tables,然后在内部调用 rbindlistThis commit修复了该问题,并且应该从 v1.9.8 开始可用。来自 NEWS :

  1. rbind for data.tables now coerces non-list inputs to data.tables first before calling rbindlist so that binding list of data.tables and matrices work as expected to be consistent with base's rbind, #1626. Thanks @ems for reporting here on SO.

这看起来像是一个可重现的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  
> 

关于R Cronbach's alpha -- rbindlist 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426957/

相关文章:

r - 在 R 中对数据表中的连续行进行分组

R 带条件和重置的累积总和

r - 计算字符串中不同模式的频率

r - 如果每年的日子不一样,我如何专门针对某些月份进行过滤?

r - Keras 如何预测 11106 个不同客户的(单独)销售序列,每个客户都有一系列不同的长度(从 1 到 15 个周期)

r data.table group by 没有聚合

r - 通过列索引而不是名称将函数应用于 data.table 列的子集

r - 根据 data.table 中的另一列创建一列唯一标识符

r - 如何很好地注释 ggplot2(手册)

r - 创建由 vapply 期间 unlist 创建的临时值的向量