如何告诉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()
答案 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;中使用的变量。把那些放回去的部分。