希望得到一些指導,因爲它只是一個偶然的分析師,並且無法真正理解如何用前面的數字值來管理表達式。替換一個子字符串
我的數據如下,我希望將「4D」和「5D」類型的數據轉換爲「4門」和「5門」。
a <- c("4D Sedan", "5D Wagon")
b <- c("4 Door Sedan", "5 Door Wagon")
dt <- cbind(a,b)
謝謝。
希望得到一些指導,因爲它只是一個偶然的分析師,並且無法真正理解如何用前面的數字值來管理表達式。替換一個子字符串
我的數據如下,我希望將「4D」和「5D」類型的數據轉換爲「4門」和「5門」。
a <- c("4D Sedan", "5D Wagon")
b <- c("4 Door Sedan", "5 Door Wagon")
dt <- cbind(a,b)
謝謝。
我們可以在這裏使用gsub()
,搜索模式:
\\b(\\d+)D\\b
,並替換它:
\\1 Door
代碼:
a <- c("4D Sedan", "5D Wagon", "AB4D car 5D")
> gsub("\\b(\\d+)D\\b", "\\1 Door", a)
[1] "4 Door Sedan" "5 Door Wagon" "AB4D car 5 Door"
注意,在上面的例子中0123中的確實不是被取代,我們也不希望發生這種情況。通過在\\b(\\d+)D\\b
中使用字邊界,我們可以避免發生不必要的替換。
謝謝,只是爲了讓我能夠完全理解,在替換「\\ 1門」中,「1」代表任何數值值? –
不,'\\ 1'是第一個_capture group_,它是我們用來搜索的模式括號中的數量,即'(\\ d +)'。換句話說,假設我們匹配那個模式,它就是'D'前面的_number_。 –
https://stackoverflow.com/questions/4736/learning-regular-expressions – jogo