2017-02-16 47 views
1
符號(list.i)

我最近從迷幻包中的R運行scoreItems功能時接收此錯誤:錯誤按鍵[ABS(list.i)中,i] <在scoreItems

Error in keys[abs(list.i), i] <- sign(list.i) : 
    number of items to replace is not a multiple of replacement length 

這是我重複的例子:

mykey <- data.frame(scale1 = c(0,1,1), scale2 = c(1,1,0)) 
mydata <- data.frame(item1 = c(1,1,2,3,5), item2 = c(5,5,5,4,3), 
    item3 = 1:5) 
test <- scoreItems(mykey, mydata) # throws error 

運行的代碼時,我曾經沒有錯誤,我得到的錯誤。我已經升級到版本1.6.12的包。

什麼原因導致錯誤?

回答

1

似乎在版本1.6.12中,可能還有其他版本的功能被添加到心理包,允許您更靈活地指定使用列表的評分鍵。但是,檢查密鑰是否爲列表的代碼也會將data.frame解釋爲列表。下面線可以看出,在源代碼:

if(is.list(keys)) keys <- make.keys(items,keys) #added 9/9/16 

因此,它不恰當地傳遞到data.frames make.keys(),這僅用於標準列表。

我已經報告了這個錯誤,所以希望它能在未來得到糾正。與此同時,簡單的解決方法是確保評分關鍵字是一個矩陣而不是數據框(假設關鍵是k×p矩陣,其中k是要評分的變量的數量,p是正在創建的派生變量的數量)。

例如,

test <- scoreItems(as.matrix(mykey), mydata)