如何按照设置的顺序命名向量变量

How to name a vector variables in order it was set

我用 RColorBrewer 创建了一个调色板,并想为有序因子向量中的颜色设置名称。我从具有 variables <- unique(df$column) 的数据框中获取变量,因此不同的列给出不同数量的变量

library(RColorBrewer)
variables <- c("PR", "PD", "C", "SD", "CR")#as example 
variables  <- ordered(variables, levels = c("C", "CR", "PR", "SD", "PD"))
test_pal <- brewer.pal(length(variables), "Accent"); names(test_pal) <- variables

并根据向量

中的'original'序列为颜色分配名称
> test_pal
       PR        PD         C        SD        CR 
"#7FC97F" "#BEAED4" "#FDC086" "#FFFF99" "#386CB0" 

但我想在顺序集中,像这样:

        C        CR        PR        SD        PD 
"#7FC97F" "#BEAED4" "#FDC086" "#FFFF99" "#386CB0" 

ordered 将创建一个有序的因子变量,但它不会对您的向量进行排序(它仅在级别中设置顺序)。分配新名称时,您必须 ordersort 因素(而不仅仅是级别):

names(test_pal) <- sort(variables)
#names(test_pal) <- variables[order(variables)]

#        C        CR        PR        SD        PD 
#"#7FC97F" "#BEAED4" "#FDC086" "#FFFF99" "#386CB0"