【问题标题】:Extract a part of string and join to the start提取字符串的一部分并连接到开头
【发布时间】:2022-10-13 22:44:47
【问题描述】:

我有一个清单

temp_list <- c("Temp01_T1", "Temp03_T1", "Temp04_T1", "Temp11_T6", 
"Temp121_T6", "Temp99_T8")

我想按如下方式更改此列表

output_list <- c("T1_Temp01", "T1_Temp03", "T1_Temp04", "T6_Temp11", 
    "T6_Temp121", "T8_Temp99")

任何线索将不胜感激

【问题讨论】:

    标签: r string list


    【解决方案1】:

    使用sub 的基本 R 答案 -

    sub('(\w+)_(\w+)', '\2_\1', temp_list)
    #[1] "T1_Temp01"  "T1_Temp03"  "T1_Temp04"  "T6_Temp11"  "T6_Temp121" "T8_Temp99"
    

    您可以在两个捕获组中捕获数据,一个在下划线之前,另一个在下划线之后,并使用反向引用反转它们。

    【讨论】:

      【解决方案2】:

      您可以使用str_split() 中的stringr,然后使用sapply() 按您想要的顺序粘贴它(如果它总是由_ 分隔)

      x <- stringr::str_split(temp_list, "_")
      sapply(x, function(x){paste(x[[2]],x[[1]],sep = "_")})
      

      【讨论】:

      • 为什么不使用基础strsplit?或者paste(rev(x), collapse="_")
      【解决方案3】:

      这应该有效。

      sub("(.*)(_)(.*)", "\3\2\1", temp_list)

      您捕获三组,一组在下划线之前,一组是下划线,一组在下划线之后,然后重新排列替换表达式中的顺序。

      【讨论】:

        猜你喜欢
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 2020-12-18
        相关资源
        最近更新 更多