2017-06-06 90 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 –

相關問題