[英]Replace element in string after first occurrence
我要替換所有2
的字符串中的第一次出現之后2
,最理想的是采用regex
中基R
似乎必須是重復的,但我找不到答案。
這是一個例子:
my.data <- read.table(text='
my.string
.1.222.2.2
..1..1..2.
1.1.2.2...
.222.232..
..1..1....
', header=TRUE, stringsAsFactors = FALSE)
my.data
desired.result <- read.table(text='
my.string
.1.2......
..1..1..2.
1.1.2.....
.2....3...
..1..1....
', header=TRUE, stringsAsFactors = FALSE)
desired.result
my.last.2 <- c(4, 9, 5, 2, NA)
my.last.2
感謝您的協助。
這似乎與您所需的輸出匹配:
> gsub(pattern = "(?<=2)(.*?)2",
replacement = "\\1\\.",
x = my.data$my.string,
perl = TRUE)
[1] ".1.2......" "..1..1..2." "1.1.2....." ".2....3..." "..1..1...."
從字面上看,這實際上是對該答案的直接修改,以使其非常類似於R。 老實說,我不太了解此正則表達式,因此請謹慎使用(並贊成)。
這可行,但效率可能很低:
with(my.data, gsub("@", "2", gsub("2", ".", sub("2", "@", my.string))))
# [1] ".1.2......" "..1..1..2." "1.1.2....." ".2....3..." "..1..1...."
方法:使用sub
僅匹配第一個匹配項,並將其更改為@
(或my.string
其他地方未顯示的其他占位符,然后使用gsub
替換所有剩余的2
s,然后使用gsub
@
返回2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.