1

行列 Y の最初の 2 列を互いにプロットし、データ セットの 12 列目に属するグループに応じて、異なるデータ ポイントに異なる形状と色を割り当てようとしています。以下は私のコードです:

 X <- as.matrix(course[,1:11])
 S <- cov(X)
 l <- eigen(S)$values
 e <- eigen(S)$vector
 Y <- X %*% e

plot(Y[,1:2],
     xlab = "PC1",
     ylab = "PC2",
     pch = c(1, 17, 8)[as.numeric(course[,12])],  # different 'pch' types 
     main = "Plot of first 2 Principle Components",
     col = c(1, 8, 1)[as.numeric(course[,12])]
     )

「コース」は私が扱っているデータセットで、Y はプロットに使用したい行列です。ただし、ラベル付けの基にしているグループの 1 つは、基本的に欠損値または「NA」です。これは「NA」値を数値として扱わないため、as.numeric() は使用できません。

プロットからコードを実行すると、2 つの値のセットが取得され、NA の値は完全に無視されます。

本当に助かります。

4

1 に答える 1

1

pchを呼び出す前に、値のベクトルを作成できるはずですplot()。たとえば、?ifelseでこれを行うことができます。ほとんどの場合、複雑なマッチング引数を必要としないようにNA、最後のelseとして s を含むカテゴリを使用すると便利です。これを変数に格納し ( と呼ぶことができますmyPch)、関数呼び出しでその変数を使用します。あれは、

# assuming there are 3 courses: "A", "B", & "C", but some C's are NA's
myPch <- ifelse(course[,12]=="A", 1, ifelse(course[,12]=="B", 17, 8) )
plot(..., pch=myPch, ...)  
于 2013-11-11T17:23:12.500 に答える