R语言如何按dataframe行顺序生成匹配的颜色向量列表
实现方法
基础R实现(最简便)
直接利用R命名向量的下标索引特性,用dataframe的COL1列作为下标取值即可,会完全匹配原行顺序:
# 构造示例数据(你已有数据可跳过这步) df <- data.frame( COL1 = c("VAL1", "VAL1", "VAL2", "VAL3", "VAL3", "VAL4", "VAL1"), COL2 = rep("ok", 7) ) my_vector <- c("VAL1"="red","VAL2"="blue","VAL3"="green","VAL4"="yellow") # 生成目标颜色向量,unname用于去掉返回结果自带的名称属性 my_vector_color <- unname(my_vector[df$COL1])
运行后得到的my_vector_color就是你需要的c("red","red","blue","green","green","yellow","red")。
tidyverse/dplyr实现
如果你习惯用dplyr的语法,可以用recode完成映射:
library(dplyr) my_vector_color <- df %>% mutate(color = recode(COL1, !!!my_vector)) %>% pull(color)
原理说明
R的命名向量支持直接用字符向量作为索引取值,会按照输入字符的顺序逐个匹配对应名称的取值,不需要额外排序操作,天然保留原dataframe的行顺序。
内容的提问来源于stack exchange,提问作者chippycentra
相关产品推荐
相关产品推荐

