【发布时间】:2017-09-18 20:10:13
【问题描述】:
我希望这与之前的帖子有足够不同的相关性,以证明其自己的主题;不幸的是,它们对我没有帮助。我认为我对部分替换的兴趣,加上使用通配符到目前为止是独一无二的,但如果我没有足够仔细地搜索或阅读,请道歉!
假设我有以下字符串:
str <- c("FOO_1", "FOO_2", "BAR_1", "BAR_2")
我想将FOO_1 末尾的1 替换为其他内容,例如A。我试图对两者都这样做
gsub("[^F.*](1)$", "\\_A", str)
和
gsub("^F.*(1)$", "\\_BLAH", str)
但显然它们都没有仅替换1,保持FOO_ 的其余部分不变,同时也没有改变BAR_1。对于这个问题,我有一个愚蠢的解决方案,只涉及一行grep() 和一行gsub(),但如果我决定这样做,我会恨自己。
【问题讨论】:
-
这里的规则是什么?只需替换字符串末尾的
_1?sub("_1$", "_A", x)?请参阅this demo - 是您要找的吗? -
很遗憾,没有;我仅想用
FOO替换变量starting,用1替换ending。因此,例如,如果方法将BAR_1更改为BAR_A,则表示失败。我只是想提供一个最小的工作示例,但在实际情况下,同一个变量有几个排列。例如,FOO_A_1、FOO_B_1等;我想捕获所有^FOO.*1$(如果表述不正确,请见谅)。 -
这需要扩展吗?您是否只想将
FOO_1替换为FOO_A? -
刚刚经过测试,@WiktorStribiżew 的回答似乎足以满足我的目的。非常感谢!抱歉打扰了。