R 为什么sub()和gsub()具有相同的结果? x

R 为什么sub()和gsub()具有相同的结果? x,r,gsub,R,Gsub,当您使用模式“*”是“”,它匹配从字符串开始到最后一个“是”,第一句是“轴”中的,第二个字符串中的“列出”中的“是”。因此,直到该部分的所有内容都将替换为“XY” 您可能期望的是: x <- c("This is a sentence about axis", "A second pattern is also listed here") sub(".*is", "XY", x) #[1] "XY" "XYted here" gsub(".*is", "XY"

当您使用模式
“*”是“
”,它匹配从字符串开始到最后一个
“是”
,第一句是
“轴”
中的
,第二个字符串中的
“列出”
中的
“是”
。因此,直到该部分的所有内容都将替换为
“XY”

您可能期望的是:

x <- c("This is a sentence about axis",
     "A second pattern is also listed here")

sub(".*is", "XY", x)
#[1] "XY"         "XYted here"

gsub(".*is", "XY", x)
#[1] "XY"         "XYted here"

如您所见,在
子调用中,仅第一个
“is”
被替换,而在
gsub
中,
“is”
的所有实例都被替换为
“XY”

如果您在R中调用
?sub
,在其给出的描述中,
sub
gsub
分别执行第一个匹配项和所有匹配项的替换。因为
*is
匹配到最后一次出现的
is
非常感谢您花时间帮助我!
sub("is", "XY", x)
#[1] "ThXY is a sentence about axis"        "A second pattern XY also listed here"

gsub("is", "XY", x)
#[1] "ThXY XY a sentence about axXY"        "A second pattern XY also lXYted here