【问题标题】:Merge two lists in order to get charaster list in r合并两个列表以获得 r 中的字符列表
【发布时间】:2021-10-01 22:28:27
【问题描述】:

我需要帮助才能创建由 ggplot 函数 (scale_fill_manual(values = c()) 获取的值列表

一方面,我有一个颜色列表,例如:

color_list=c("blue" "red" "green")

另一方面,我有一个名称列表,例如:

names_list=c("A","B","C")

我想:

  1. 合并这两个列表以获得向量:

    The_vector

  2. The_vector 中添加一个新元素:"D"=grey

The_vector 应如下所示:c("A"="blue","B"="red","C"="green","D"="grey") 或打印格式,如:

A      B       C       D
"blue"  "red"  "green" "grey"

请问有人有什么想法吗?

然后我将在函数中使用向量,例如:

scale_fill_manual(values = The_vector)

【问题讨论】:

    标签: r list ggplot2 dplyr


    【解决方案1】:

    如果两个向量长度相同,顺序相同,我们可以使用setNames

    new_color_list <- setNames(color_list, names_list)
    new_color_list
        A       B       C 
     "blue"   "red" "green" 
    

    names 在同一个对象上

    names(color_list) <- names_list
    

    现在,我们可以连接

    c(new_color_list, c(D = 'grey'))
       A       B       C       D 
     "blue"   "red" "green"  "grey" 
    

    或分配新元素

    new_color_list['D'] <- 'grey'
    new_color_list
          A       B       C       D 
     "blue"   "red" "green"  "grey" 
    

    【讨论】:

      【解决方案2】:

      setNames 的变体(但建议使用@akrun 的答案)

      > `names<-`(color_list, names_list)
            A       B       C 
       "blue"   "red" "green"
      

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 1970-01-01
        • 2017-09-11
        • 2012-03-20
        • 2019-05-29
        • 2018-05-20
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        相关资源
        最近更新 更多