【问题标题】:Create a new color vector for each unique factor in a vector based of another predefined vector.为基于另一个预定义向量的向量中的每个唯一因子创建一个新的颜色向量。
【发布时间】:2018-03-15 03:46:56
【问题描述】:

抱歉,因为我不知道如何表达这个问题。假设有两个向量

v <- c("a","a","a","a",'b','b')
color <- c("red","yellow")

无需手动为每个唯一元素分配颜色

final.color <- c("red","red","red","red","red","yellow","yellow")

我怎样才能自动创建这个向量?

谢谢。

【问题讨论】:

  • as.character(factor(v,labels=color))setNames(color, unique(v))[v] - 我敢肯定这一定是重复的。

标签: r


【解决方案1】:

首先我们找到v中唯一元素的数量,然后使用rep重新创建final.color

v <- c("a","a","a","a",'b','b')
color <- c("red","yellow")

final.color <- c("red","red","red","red","yellow","yellow")

# find number of unique elements in a vector
n_unique <- c(table(v))

# create color from n_unique
tmp <- c(rep(color[1], n_unique[1]), rep(color[2], n_unique[2]))
tmp
#> [1] "red"    "red"    "red"    "red"    "yellow" "yellow"

identical(final.color, tmp)
#> [1] TRUE

reprex package (v0.2.0) 于 2018 年 3 月 14 日创建。

【讨论】:

  • 谢谢我修改了一点,v &lt;- c("a","a","a","a",'b','b') color &lt;- c("red","yellow") nu &lt;- data.frame(table ( v) ) nc &lt;- c() for ( i in 1:nrow (nu)){ nc &lt;- c( nc, rep ( color[i], nu[i,]$Freq ) ) } nc
  • 我不明白你为什么要使用for循环,$Freq是从哪里来的?
  • for 循环不需要手动输入 color[x],因为在其他情况下可能会有更多,我可以生成 final.color。感谢桌子的想法很聪明。
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2016-08-18
  • 2022-06-28
  • 2018-01-06
  • 1970-01-01
  • 2011-04-23
相关资源
最近更新 更多