1

我有四个级别的字符向量,比如 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 向量仅包含“红色”颜色...

有什么建议吗?

4

1 回答 1

3

首先,palette不做你认为它做的事。其次,我们可以只使用向量索引来做到这一点:

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

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

于 2013-09-13T20:23:55.500 回答