1

我试图将矩阵 Y 的前两列相互绘制,并根据它们在我的数据集的第 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 是我有兴趣用于我的绘图的矩阵。然而,我基于我的标签的组之一基本上是缺失值或“NA”。我不能使用 as.numeric() 因为这不会将“NA”值视为数字。

当我从图中运行代码时,我得到了两组值,它完全忽略了 NA 的值。

我非常感谢您的帮助。

4

1 回答 1

1

您应该能够pch在调用之前创建一个值向量plot()。例如,您可以使用?ifelse来执行此操作。NA最有可能的是,将带有s 的类别作为最后的else会很方便,这样您就不需要复杂的匹配参数。将其存储在一个变量中(您可以调用它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 回答