我试图将矩阵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的值。
我真的很感激帮助。
答案 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, ...)