如何翻转以'-'分隔的数值对?适配不同长度数据的方案
解决分隔符'-'两侧数值翻转的问题
核心方案:使用gsub结合正则捕获组
你之前考虑的gsub完全能解决这个问题,关键是利用正则的捕获组匹配并交换-两侧的数值,无需复杂的拆分拼接操作。
步骤1:定义原始数据
myDat <- c("11-11 10-30", "1-1 30-29", "9-8", "1-1 1-1 1-3", "0-1 7-12", "5-8 20-45")
步骤2:执行翻转操作
myDat_processed <- gsub("(\\d+)-(\\d+)", "\\2-\\1", myDat)
正则逻辑说明
(\\d+):匹配一个或多个数字,第一个括号捕获-左侧的数值,第二个括号捕获右侧的数值\\2-\\1:替换时将第二个捕获组(右侧数值)前置,连接-后再放置第一个捕获组(左侧数值),实现两侧数值翻转
查看处理结果
print(myDat_processed) # 输出: # [1] "11-11 30-10" "1-1 29-30" "8-9" "1-1 1-1 3-1" "1-0 12-7" "8-5 45-20"
这个方法不受数值长度限制,只要是数字-数字的格式就能精准处理,比拆分拼接更简洁高效。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

