我有四个等级的字符向量,比如说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向量仅包含“红色”颜色......
有什么建议吗?
答案 0 :(得分:2)
首先,palette
没有按照您的想法行事。其次,我们可以使用向量索引来做到这一点:
v2 <- rainbow(4)
> names(v2) <- unique(v1)
> v2[v1]
显然,unique(v1)
将按特定顺序返回值。如果您希望以不同方式分配值,则必须手动指定值。