web-dev-qa-db-ja.com

NAが許可されていても、R関数prcompがNAの値で失敗する

最初の2つの主成分を計算するために関数prcompを使用しています。ただし、データにNA値が含まれているため、関数がエラーをスローします。定義されているna.actionは、ヘルプファイル?prcompに記載されているにもかかわらず機能しないようです。

これが私の例です:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

d$V1[5] <- NA
d$V2[7] <- NA

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

Mac OS X用の最新のRバージョン2.15.1を使用しています。

prcompが失敗する間、誰かが理由を見ることができますか?

これが私の新しい例です:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

d$V1[5] <- NA

result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

pC1とPC2で行5を保持することは可能ですか?私の実際のデータセットにはもちろん3列以上の変数があり、欠落しているのはそのうちのいくつかだけで、他の値に隠されている残りの情報を失いたくない!

24
user969113

式インターフェースを使用したくない場合の別の解決策は、

prcomp(na.omit(d), center = TRUE, scale = TRUE)

na.omitデータフレームに直接。

22
Jilber Urbina

ええ、それは「機能」(バグ)のように見えますna.actionは、formulaインターフェイスを使用しない限り完全に無視されます。これは R開発リストで以前に取り上げられた です。

これは文書化するか、バグとして報告する必要があると思います。

明確にするために、これは数式インターフェイスにアクセスするため機能します。

prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
22
nograpes