29

この関数prcompを使用して、最初の 2 つの主成分を計算しています。ただし、私のデータにはいくつかの 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 を保持することは可能ですか? 私の実際のデータセットには、もちろん 2 つ以上の変数の列があり、それらの一部のみが欠落しており、他の値に隠されている残りの情報を失いたくありません!

4

2 に答える 2

30

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

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

na.omitこれは、データ フレームに直接適用することで構成されます。

于 2012-08-22T17:47:45.947 に答える
28

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

これは文書化するか、バグとしてフラグを立てる必要があると思います。

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

prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
于 2012-08-22T17:31:21.947 に答える