仅在特定位置替换字符

时间:2017-06-06 19:48:27

标签: r regex

如何告诉R仅在给定位置替换字符串?以下示例可以在任何位置进行。试图让它工作,并且无法弄清楚语法。

z <- c("alpha 1 bravo 0 charlie_ 0 v1 whiskey 0")
z  #  replace only in pos 25,26  substr(z, 25, 26)
sink('output.txt')
gsub(" 0","**",z)   # <@>><  ??
sink()

1 个答案:

答案 0 :(得分:1)

让它从头开始跳过24个字符,然后进行测试。此外,此处sub可能优于gsub

z <- c("alpha 1 bravo 0 charlie_ 0 v1")
sub("^(.{24}) 0", "\\1**", z)
[1] "alpha 1 bravo 0 charlie_** v1"

更新了字符串

z2 <- c("alpha 1 bravo 0 charlie_ 0 v1 whiskey 0") 
sub("^(.{24}) 0", "\\1**", z2)
[1] "alpha 1 bravo 0 charlie_** v1 whiskey 0"

为了清楚起见,此模式更改位置25和26.之前或之后没有位置。它是通过从开头跳过正好24个字符然后测试模式来实现的。 0&#34 ;.将括号括在.{24}左右会导致前24个字符存储在变量\ 1中,这是&#34; sub&#34;中使用的变量。把那些放回去的部分。