R語言之——字串處理函數,字串函數
nchar
取字元數量的函數
length與nchar不同,length是取向量的長度
# nchar表示字串中的字元的個數nchar("abcd")[1] 4# length表示向量中元素的個數length("abcd")[1] 1length(c("hello", "world"))[1] 2
paste和paste0
字串粘合函數
paste在不指定分割符的情況下,預設分割符是空格
paste0在不指定分割符的情況下,預設分割符是空
# 預設以空格隔開paste("Hello","world")[1] "Hello world"# 沒有空格paste0("Hello","world")[1] "Helloworld"# 指定分割符paste("abc", "efg", "hijk", sep = "-")[1] "abc-efg-hijk"# 分別對向量的每一個元素進行串連paste0("A", 1:6, sep = "")[1] "A1" "A2" "A3" "A4" "A5" "A6"# collapse參數:每一個元素操作之後,再把向量的每一個元素進行串連paste0("A", 1:6, sep = "",collapse = "-")[1] "A1-A2-A3-A4-A5-A6"
substr
字串截取函數
substr(x = "hello", start = 1, stop = 2)[1] "he"
strsplit
字串的分割函數,可以指定分割符,產生一個list
strsplit("abc", split = "")[[1]][1] "a" "b" "c"
如果要對一個向量使用該函數,需要注意。
# 分割向量的每一個元素,並取分割後的第一個元素unlist(lapply(X = c("abc", "bcd", "dfafadf"), FUN = function(x) {return(strsplit(x, split = "")[[1]][1])}))[1] "a" "b" "d"
gsub和sub
字串替換
gsub替換匹配到的全部
sub 替換匹配到的第一個
# 將b替換為Bgsub(pattern = "b", replacement = "B", x = "baby")[1] "BaBy"gsub(pattern = "b", replacement = "B", x = c("abcb", "boy", "baby"))[1] "aBcB" "Boy" "BaBy"# 只替換第一個bsub(pattern = "b", replacement = "B", x = "baby")[1] "Baby"sub(pattern = "b", replacement = "B", x = c("abcb", "baby"))[1] "aBcb" "Baby"
grep和grepl
字串匹配
grep函數返回的是索引值
grepl函數返回的是邏輯值
# 返回匹配到的元素的索引grep(pattern = "boy", x = c("abcb", "boy", "baby"))[1] 2# 返回邏輯值grepl(pattern = "boy", x = c("abcb", "boy", "baby"))[1] FALSE TRUE FALSE
match && pmatch &&charmatch
1、match
Usage
match(x, table, nomatch = NA_integer_, incomparables = NULL)
x %in% table
參數:
x: vector or NULL: the values to be matched. Long vectors are supported.
table : vector or NULL: the values to be matched against. Long vectors are not supported. (被匹配的值)
nomatch: the value to be returned in the case when no match is found. Note that it is coerced to integer. (沒有match上的返回的值)
incomparables : a vector of values that cannot be matched. Any value in x matching a value in this vector is assigned the nomatch value. For historical reasons, FALSE is equivalent to NULL. (不同來匹配的值)
match函數類似與 %in%,不同的是match返回的是索引,而%in%返回的是邏輯值。