2017-09-23 484 views
0

RでHartiganのdiptestを実行しようとしていますが、「x」は数値でなければなりません。'x'は数値でなければなりませんRエラー

このような基本的な質問にはお詫び申し上げますが、ロードするデータが数値であることをどうすれば確認できますか?

(以下コード)を次のように私は、値のセットを構成する場合は、diptestは問題なく動作します。

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9)  
hist(x) 
dip.test(x)  

しかし、例えば、同じ値が区切られたExcelファイル/タブに保存されたとき。 txtファイル(値の1列として保存されます)をRにインポートすると、diptestを実行すると 'x'が数値エラーでなければなりません。 Excel/.txtファイルからインポートされたデータがどの形式であるかをチェックし、その後数値に変更する方法はありますか?再度、感謝します。

お手数をおかけしますようお願い申し上げます。

+1

'read.table'は' data.frame'を返します。列の一部または全部が '数値 'である可能性があります。 'x'がそのような列である場合、' hist(Dat $ x) 'はヒストグラムをプロットします。しかし、あなたの質問では 'Dat'を読み込み、' hist'のために別のものを使います。あまり意味がない。 'str(Dat)'または 'dput(head(Dat、20))'の出力をポストします。 –

+0

謝罪 - 私はうまくいけばそれを少し明確にした私の質問(コメントで十分ではない)を編集しました。私はあなたに感謝します。 – StatsCode

答えて

2

ここには何が起こっているのですか?動作しているコードを実行すると、データクラスがnumericであるため、動作しています。しかし、それを読み返すと、それはdata.frameです。だから、data.frameの数値要素を指す必要があります。

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9) 

write.csv(x, "x.csv", row.names=F) 
x <- read.csv("x.csv") # comes back in as a data frame 

hist(x$x) 

dip.test(x$x) 
Hartigans' dip test for unimodality/multimodality 

data: x$x 
D = 0.15217, p-value = 2.216e-05 
alternative hypothesis: non-unimodal, i.e., at least bimodal 

あなたの代わりに.CSVの.RDSにファイルを保存した場合、あなたはこの問題を回避することができます。

関連する問題