R中自帶的字符串連接的函數是paste。
先來看一下官方文檔里對paste用法的解釋:
基本格式:
paste (…, sep = " ", collapse = NULL)
其中,…表示對象,可以有多個,中間用逗號隔開。
sep表示分隔符,默認為空格。
collapse表示如果不指定值,那么函數paste的返回值是…的對象之間通過sep指定的分隔符連接后得到的一個字符型向量;如果為其指定了特定的值,那么自變量連接后的字符型向量會再被連接成一個字符串,之間通過collapse的值分隔。
舉例來說
paste("Hello", "xiaoming", sep = "-")
輸出結果:
"Hello-xiaoming"
而如果其中某個對象是向量,會有類似于“循環連接”的效果。
paste("Hello", 1:2, sep = "-")
輸出結果:
"Hello-1" "Hello-2"
如果想讓上面的變成字符串而不是向量,只需要設置collapse。
paste("Hello", 1:2, sep = "-", collapse = ",")
輸出結果:
"Hello-1,Hello-2"
補充:[R字符串] 字符串長度、分割、拼接、截取、替代、匹配和大小寫替換
獲取字符串長度:nchar()
字符串分割:strsplit()
字符串拼接:paste()
字符串截取:substr()
字符串替代:gsub() chartr() sub()
字符串匹配:grep()
大小寫替換:toupper() tolower()
1. 獲取字符串長度
nchar()能夠獲取字符串的長度,它也支持字符串向量操作。注意它和length()的結果是有區別的。
fruit <- 'apple orange grape banana' nchar(fruit) length(fruit) #元素個數為1 [1] 1
2. 字符串分割
strsplit()負責將字符串按照某種分割形式將其進行劃分,需要設定分隔符。下面我們是用空格來作為
分隔符將fruit分為四個元素。
> strsplit(fruit,split=' ') [[1]] [1] "apple" "orange" "grape" "banana" #list結構 > fruitvec <- unlist(strsplit(fruit,split=' ')) > fruitvec [1] "apple" "orange" "grape" "banana" #轉化為向量
3. 字符串拼接
paste()負責將若干個字符串相連結,返回成單獨的字符串。其優點在于,就算有的處理對象不是字符
型也能自動轉為字符型。另一個相似的函數paste0是設置無需分隔符的拼接。
paste(fruitvec,collapse=',') #逗號作為分隔符 [1] "apple,orange,grape,banana"
4. 字符串截取
substr()能對給定的字符串對象取出子集,其參數是子集所處的起始和終止位置。
substr(fruit, 1,5) [1] "apple"
5. 字符串替代
chartr是字母替換,不是字符串替換。
gsub()負責搜索字符串的特定表達式,并用新的內容加以替代。
sub()函數類似gsub(),但只替代第一個。
> chartr('world','bear',a) #字母替換 Error in chartr("world", "bear", a) : 'old' is longer than 'new' #字符長度要求一致 > chartr('world','beara',a) [1] "herre beara" > x<-'i love you' > chartr('you','she',x) #實際是字母替換,不是字符串替換 [1] "i lhve she" > a<-'i love you, do you love me ?' > sub('you','she', a) #只替換第一個參數you [1] "i love she, do you love me ?" > gsub('you','she', a) #可以替換全部參數 [1] "i love she, do she love me ?" gsub('apple','strawberry',fruit) [1] "strawberry orange grape banana"
6. 字符串匹配
grep()負責搜索給定字符串對象中特定表達式 ,并返回其位置索引。grepl()函數與之類似,但其后面的”l”則意味著返回的將是邏輯值。
grep('grape',fruitvec) #返回grape在fruitvec中的位置 [1] 3
7. 大小寫替換
> a <- "Hello World" > toupper(a) #全部替換為大寫 [1] "HELLO WORLD" > tolower(a) #全部替換為小寫 [1] "hello world"
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/happywlg123/article/details/82728971