基于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')