我想为绘图中的特定标志(POP
(指定特定颜色(C
(。我试过
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
并且结果图中的颜色不正确。
改为放入col = COLS$C[match(PC$POP, COLS$P)]
。其用途见?match
。
不能将"=="
安全地应用于两个不同长度的向量。其逻辑与将两个不同长度的向量相加相同。回收规则适用。这个规则在某些应用程序中很有用,但您有责任让它做正确的事情/生成所需的结果。
此外,在data.frame()
调用中需要stringsAsFactors = FALSE
,以避免颜色变量(字符串(被编码为因子(整数(。