如何用r中的for循环指定字符向量中的颜色

时间:2013-09-13 19:52:39

标签: r graphics for-loop plot

我有四个等级的字符向量,比如说v1。级别的情况随机分布在向量v1中:

set.seed(10)

v1<-sample((rep(c("book","Dog","sun","shell"),c(12,30,18,40))))

第二个字符向量,比如v2,包含四种颜色:

v2<-palette(rainbow(4))

鉴于我想要使用v2中的特定颜色从v1中为每个级别的情况着色,我将如何使用R中的for循环来实现它。

这是我的代码不起作用:

col.dots<-v1
for(i in 1:length(unique(v1))){
  for(y in 1: length(v2)){
    col.dots[col.dots==unique(v1)[i]]<-v2[y]
  }
}

返回的col.dots向量仅包含“红色”颜色......

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

首先,palette没有按照您的想法行事。其次,我们可以使用向量索引来做到这一点:

v2 <- rainbow(4)
> names(v2) <- unique(v1)
> v2[v1]

显然,unique(v1)将按特定顺序返回值。如果您希望以不同方式分配值,则必须手动指定值。