基于R中的分隔符交换变量名
我有变量名基于R中的分隔符交换变量名,r,gsub,R,Gsub,我有变量名 Sales\u Ab Cost\u Bcfg Revenue\u Cshsh 我希望输出数据如下所示 Ab_销售Bcfg_成本Cshsh_收入 Im-aware sub和gsub可以以某种形式使用,但我不熟悉编码所需的确切技术。我们使用sub匹配第一个单词,作为一个组捕获((\\w+)),然后捕获下一个单词((…)),将其替换为反向引用。在这里,我们将反向参考的顺序切换到第二个反向参考,然后是\uuuu,然后是第一个反向参考 sub("(\\w+)_(\\w+)", '\\2_\\1
Sales\u Ab Cost\u Bcfg Revenue\u Cshsh
我希望输出数据如下所示
Ab_销售Bcfg_成本Cshsh_收入
Im-aware sub和gsub可以以某种形式使用,但我不熟悉编码所需的确切技术。我们使用
sub
匹配第一个单词,作为一个组捕获((\\w+)
),然后捕获下一个单词((…)
),将其替换为反向引用。在这里,我们将反向参考的顺序切换到第二个反向参考,然后是\uuuu
,然后是第一个反向参考
sub("(\\w+)_(\\w+)", '\\2_\\1', v1)
#[1] "Ab_Sales" "Bcfg_Cost" "Cshsh_Revenue"
数据
v1只需执行sub(“(\\w+)”、“\\2\\\1',v1)
你能解释一下这个代码吗?请阅读以下内容:。@akrun我们真的应该通过回答鼓励人们提出这样的问题吗?如果我们先帮助改进这个问题不是更好吗?@Alex当OP要求解释时,我本想把它作为一个评论。我假设OP是regex中的新手。感谢您的解释,那么这只限于两个组,还是我们可以将其扩展到第三组或第四组?@user36176它不限于两个组,但您可以将其扩展到第三组或第四组。唯一的事情是(\\w+)\u(\\ w+)\u(\\ w+)\u(\\ w+)
,换言之,让我们说2 4,1,3,然后顺序“\\2\u4\\u1\\u3”
v1 <- c('Sales_Ab', 'Cost_Bcfg', 'Revenue_Cshsh')