绘制属于R中不同组的数据点的不同形状

时间:2013-11-11 16:55:48

标签: r plot missing-data pch

我试图将矩阵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])]
     )

“course”是我正在使用的数据集,Y是我有兴趣用于我的情节的矩阵。然而,我基于标签的其中一个组基本上缺少值或“NA”。我不能使用as.numeric(),因为这不会将“NA”值视为数字。

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

我真的很感激帮助。

1 个答案:

答案 0 :(得分: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, ...)