我是 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
输入。
rbind
现在首先将非 data.table 列表元素强制到 data.tables,然后在内部调用 rbindlist
。 This commit修复了该问题,并且应该从 v1.9.8 开始可用。来自 NEWS :
这看起来像是一个可重现的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/