r-将颜色分配给从DF中选择相应颜色的标志



我想为绘图中的特定标志(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,以避免颜色变量(字符串(被编码为因子(整数(。

相关内容

  • 没有找到相关文章

最新更新