克朗巴赫';s alpha--rbindlist错误
我是新来R的。我正在尝试为一个数据集计算克朗巴赫的阿尔法(来自psych软件包)。数据集如下所示:克朗巴赫';s alpha--rbindlist错误,r,data.table,R,Data.table,我是新来R的。我正在尝试为一个数据集计算克朗巴赫的阿尔法(来自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: N
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调用来自何处,也不知道如何输入正确的数据结构。数据集本身(“归属数据”)是一个data.frame。不知道问题出在哪里 更新:发生此问题的原因是
psych::alpha
创建一个矩阵
,并尝试将该矩阵绑定到输入数据表。但是,rbind
(内部调用rbindlist
)用于data.table,迄今为止只处理了list/data.frame/data.table
输入
rbind
for data.tables现在先将非data.table列表元素强制为data.tables,然后在内部调用rbindlist
。修复了该问题,应在上的v1.9.8中提供。发件人:
rbind
for data.tables现在在调用rbindlist
之前首先强制将非列表输入到data.tables,以便data.tables和矩阵的绑定列表按预期与base的rbind一致。感谢@ems对SO的报道这看起来像是一个可复制的
data.table
bug。我已经存档了。谢谢你发帖
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
>
是吗?看起来像,但可能不是。
dput(head(property\u data))
给了你什么?@thelatemail噢,你的意思是可能property\u数据不是一个数据帧?Hm.class(归属数据)给出“[1]”数据表“.data.frame”,而typeof(归属数据)给出“[1]”列表“。。。R> dput(head(attery_data))结构(list(list)(attery.q1=c(NA,5L,NA,5L,4L,5L),attery.q2=c(NA,5L,NA,5L,5L,5L,5L),attery.q4=c(NA,5L,NA,5L,3L,5L),attery.q5=c(NA,5L,NA,5L,3L,4L),attery.name=c(“attery.q1”,“attery.q2”,“attery.q3=c”,“attery”,“attery.q4”,“attery”数据类,“data.frame”),row.names=c(NA,-6L),.internal.selfref=)