我是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。不确定是什么问题。
答案 0 :(得分:3)
更新:发生此问题是因为psych::alpha
创建了matrix
并绑定了尝试将该矩阵绑定到输入data.table。但是,rbind
(内部调用rbindlist
)for data.table目前只处理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
>