要想批量替換一些字符串還需要在excel完成嗎腻窒?Nope,代碼也可哦驻债,今天又get到了一個新的知識點标锄,認識了一個新的函數(shù)了,一起來學習一下吧~
image
gsub()可以用于字段的刪減端盆、增補、替換和切割费封,可以處理一個字段也可以處理由字段組成的向量焕妙。
具體的使用方法為:gsub("目標字符", "替換字符", 對象)
>text1 <- "ABcdEfgh . ljkl MNNM"
>gsub("Efg","RRR",text1) # #將Efg改為RRR,區(qū)分大小寫
[1] "ABcdRRRh . ljkl MNNM"
- 任何符號弓摘,包括空格焚鹊、Tab和換行都是可以識別的
> gsub(" l","q",text1) # #可識別空格
[1] "ABcdEfgh .qjkl MNNM"
- 同時字符可以識別多個,進行批量置換
> gsub("M","O",text1)
[1] "ABcdEfgh . ljkl ONNO"
- 除此之外韧献,gsub還有其他批量操作的方法
> gsub("^.* ", "a", text1) #選擇從開頭到第一個空格(注意字符"^.* "后引號前有一個空格)替換為a
[1] "aMNNM"
> gsub("^.*l(j).*$","\\1",text1) ##只保留一個j
[1] "j"
> gsub(" .*$","b",text1) # #第一個空格直達結(jié)尾替換成b
[1] "ABcdEfghb"
> gsub("\\.","\\+",text1) # #句號.和加號+是特殊的末患,要添加\\來識別
[1] "ABcdEfgh + ljkl MNNM"
sub()提供一個替換值研叫,可以是字符串或函數(shù),和一個要被處理的字符串璧针。
那么sub()和gsub()函數(shù)有什么區(qū)別呢嚷炉?
> text <- c("we are the world", "we are the children")
> sub("w", "W", text) #第一個句子有兩個w,但sub()只識別第一個相應的字符
[1] "We are the world" "We are the children"
> sub("W","w",text)
[1] "we are the world" "we are the children"
> gsub("W","w",text) #gsub()識別全部對應的字符
[1] "we are the world" "we are the children"
> gsub("w","W",text)
[1] "We are the World" "We are the children"
> sub(" ", "", "abc def ghi")
[1] "abcdef ghi"
> gsub(" ", "", "abc def ghi")
[1] "abcdefghi"
- 從上面的輸出結(jié)果可以看出探橱,sub()和gsub()的區(qū)別在于申屹,前者只替換第一次匹配的字符串,而后者會替換掉所有匹配的字符串隧膏。
- 注意:gsub()是對向量里面的每個元素進行搜素哗讥,如果發(fā)現(xiàn)元素里面有多個位置匹配了模式,則全部進行替換私植,而grep()也是對向量里每個元素進行搜索忌栅,但它僅僅知道元素是否匹配了模式(并返回該元素在向量中的下標),但具體元素中匹配了多少次卻無法知道曲稼。
參考來源:
https://www.cnblogs.com/nkwy2012/p/8625063.html
https://blog.csdn.net/lztttao/article/details/82086346