2016-11-11 50 views
0

我在使用klaR包運行樸素貝葉斯時遇到此錯誤。因素水平和零差異

我想分享數據以便複製,但是我這樣做有一些限制,因爲我不確定發生了什麼,所以無法創建將會重新創建自己的數據集。我希望有人讀到這個可能以前遇到過並且克服了這個錯誤。

以下是錯誤:

Error in if (any(temp)) stop("Zero variances for at least one class in variables: ", : 
     missing value where TRUE/FALSE needed 

我發現了一些帖子在網上對這個已經: herehere

從我可以聚集我有一些的水平,具有在1種或零情況下我數據。

麻煩是我找不到任何。我嘗試這樣做:

sapply(df, function(x) table(x)) 

,看是否有返回表顯示的零或一個實例,但有近400虛擬變量我看不到任何 - 都爲0或1個因子水平至少幾個實例,我可以看到。

是否可以告訴R突出顯示哪些級別導致問題?我不確定我的下一步行動,因爲我找不到可能是罪魁禍首的任何級別。

+0

零差異也意味着,你可以有相同的數字,但多次?這有幫助嗎? – drmariod

+1

錯誤來自您的代碼或功能代碼嗎?無論哪種情況,'which(is.na(temp))'都可以幫助你找到問題。 –

+0

@ sebastian -c它來自功能代碼,所以不知道如何訪問變量temp。它來自這個步驟模型< - NaiveBayes(target〜。,data = dataplay)基於KlaR包的Niave Bayes –

回答

1

的問題是在條件進行測試,可以再現誤差:

if (NA) { 
    print("ERROR") 
} 

你可以將其校正成anyNA(temp)any(is.na(temp))

如果錯誤在方差信息上,您可以用sapply(df, function(x){length(table(x)) == 1}進行測試。

+0

感謝您的回答。實際上,變量temp是包內的一個神祕變量,我從來沒有創建它。我嘗試了sapply(df,function(x){length(table(x))== 1},它返回了一個TRUE或FALSE列表,然後我在這個列表上做了一個表格(叫做ind)(grepl(「 TRUE「,ind))和所有的值都是FALSE,所以看起來我的所有級別都有多個值,所以不知道爲什麼r會拋出這個錯誤 –

+0

無論你如何處理數據都不能解決問題,不管數據如何變化,都會進行測試,試着將問題提交給軟件包維護者,或者如果它是開放的並且可以用來糾正你自己的錯誤。 – Llopis