如何实现R语言列表中字符串下划线前后内容互换拼接?
调换字符串中下划线分隔两部分的R实现
针对你给出的字符串列表,我们可以通过两种常见方法实现将每个字符串中下划线分隔的前后两部分调换位置:
方法一:基础R原生函数实现
无需额外安装包,利用strsplit拆分字符串后重新拼接:
temp_list <- c("Temp01_T1", "Temp03_T1", "Temp04_T1", "Temp11_T6", "Temp121_T6", "Temp99_T8") output_list <- sapply(strsplit(temp_list, "_"), function(x) paste(x[2], x[1], sep = "_"))
strsplit(temp_list, "_"):将每个字符串按下划线拆分为包含两个元素的向量sapply遍历所有拆分后的向量,用paste将第二个元素和第一个元素重新用下划线连接
方法二:使用stringr包的正则替换
如果习惯使用tidyverse系列工具,stringr的正则替换会更简洁:
library(stringr) temp_list <- c("Temp01_T1", "Temp03_T1", "Temp04_T1", "Temp11_T6", "Temp121_T6", "Temp99_T8") output_list <- str_replace(temp_list, "^(.*)_(.*)$", "\\2_\\1")
- 正则表达式
^(.*)_(.*)$捕获下划线前后的所有内容为两个分组 \\2_\\1表示将第二个分组(下划线后内容)放在前面,第一个分组(下划线前内容)放在后面,完成调换
运行任意一种方法后,output_list都会得到你期望的结果:
> output_list [1] "T1_Temp01" "T1_Temp03" "T1_Temp04" "T6_Temp11" "T6_Temp121" "T8_Temp99"
内容的提问来源于stack exchange,提问作者Bella_18
相关产品推荐
相关产品推荐

