我想为绘图中的特定标志(C
)指定特定颜色(POP
)。我尝试过
PC <- data.frame(POP = c("A", "C", "C", "B"),
X = c(0.1,0.2,0.3,0.4),
Y = c(0.1,0.2,0.3,0.4))
COLS <- data.frame(C = c("red", "grey", "brown"),
P = c("A", "B","C"))
plot(PC$X, PC$Y, col = COLS$C[which(COLS$P == PC$POP)])
但出现以下错误
Warning messages:
1: In `==.default`(COLS$P, PC$POP): longer object length is not a multiple of shorter object length
2: In is.na(e1) | is.na(e2): longer object length is not a multiple of shorter object length
结果图中的颜色不正确。
答案 0 :(得分:0)
放入col = COLS$C[match(PC$POP, COLS$P)]
。参见?match
。
您不能安全地将"=="
应用于两个不同长度的向量。逻辑与您将两个不同长度的向量相加相同。回收规则适用。该规则在某些应用程序中很有用,但是您有责任做正确的事/产生所需的结果。
此外,您需要在stringsAsFactors = FALSE
调用中使用data.frame()
,以避免将颜色变量(字符串)编码为因子(整数)。