【问题标题】:Rename elements of a list重命名列表的元素
【发布时间】:2021-03-14 04:50:55
【问题描述】:

我正在创建一个从数据框中提取变量的大型列表。这是一个例子:

df <- data.frame (A-Imp = c(4,8,2,4,3),
      A-Rea = c(4,4,5,6,7),
      B-Imp = c(3,2,6,5,8),
      B-Rea = c(1,2,6,7,9),
      C-Imp = c(4,8,6,6,10),
      C-Rea = c(6,8,5,1,9),
      D-Imp = c(1,6,4,8,8),
      D-Rea = c(3,3,6,1,10))

groups <- list(
   "groupA" <- c("A-Imp", "A-Rea"),
   "groupB" <- c("B-Imp", "B-Rea"),
   "groupC" <- c("C-Imp", "C-Rea"),
   "groupD" <- c("D-Imp", "D-Rea"))

我想要做的是重命名每个向量的条目,只保留名称的最后一部分。它看起来像这样:

groups <- list(
   "groupA" <- c("Imp", "Rea"),
   "groupB" <- c("Imp", "Rea"),
   "groupC" <- c("Imp", "Rea"),
   "groupD" <- c("Imp", "Rea"))

由于这是一个很长的列表,我不想手动完成。关于如何继续的任何想法?

【问题讨论】:

    标签: r list rename


    【解决方案1】:

    使用sub,您可以删除下划线之前的所有内容。

    result <- lapply(groups, function(x) sub('.*-', '', x))
    result
    
    #[[1]]
    #[1] "Imp" "Rea"
    
    #[[2]]
    #[1] "Imp" "Rea"
    
    #[[3]]
    #[1] "Imp" "Rea"
    
    #[[4]]
    #[1] "Imp" "Rea"
    

    【讨论】:

      【解决方案2】:
      groups <- lapply(groups, sub, pattern = "[A-Z]-", replacement = "")
      
      str(groups)
      List of 4
       $ : chr [1:2] "Imp" "Rea"
       $ : chr [1:2] "Imp" "Rea"
       $ : chr [1:2] "Imp" "Rea"
       $ : chr [1:2] "Imp" "Rea"
      

      【讨论】:

        【解决方案3】:

        使用Map()

        Map(function(x){gsub("^\\w\\-", "", x)}, groups)
        

        【讨论】:

          【解决方案4】:

          使用mapstr_remove

          library(purrr)
          library(stringr)
          map(groups, str_remove, pattern = ".*-")
          

          -输出

          #[[1]]
          #[1] "Imp" "Rea"
          
          #[[2]]
          #[1] "Imp" "Rea"
          
          #[[3]]
          #[1] "Imp" "Rea"
          
          #[[4]]
          #[1] "Imp" "Rea"
          

          【讨论】:

            猜你喜欢
            • 2011-10-16
            • 2020-09-20
            • 1970-01-01
            • 2016-12-03
            • 2022-07-01
            • 2021-03-08
            • 2013-08-05
            • 2021-05-01
            • 1970-01-01
            相关资源
            最近更新 更多