2017-06-06 91 views
0

如何告诉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

只是让它从开头跳过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”来完成。将括号括在.{24}左右会使前24个字符存储在变量\ 1中,这是“子”部分中用于放回的那些变量。

+0

Tx G5 !!!我想我也需要限制到25号,因为我可以有更多的字符后,我修改了我原来的测试字符串。 z < - c(“alpha 1 bravo 0 charlie_ 0 v1 whiskey 0”)。试图了解什么是\\ 1 .... –

+0

我的模式只会做位置25和26,而不是之后。我将添加更新的测试字符串。 – G5W

+0

是的,对不起,我完美。 \\ 1表示跳过的部分?,一个斜线是逃生,并且\ 1表示它?你如何在R中调用这个参考,非常有趣。最好。 M –

相关问题