1. 程式人生 > >R語言中paste函式的引數sep和collapse詳解

R語言中paste函式的引數sep和collapse詳解

R語言用於拼接字串的函式主要有兩個:

paste (..., sep = " ", collapse = NULL)
paste0(..., collapse = NULL)

其中paste0函式式paste函式的縮減版本,少了一個引數sep。引數中的...表示的是想要拼接的物件,後面的引數表示拼接的方式。通常對於字串拼接我們有三種需求:

  • 一堆單獨的字串拼接到一起;
  • 兩個或者更多字串物件根據元素對應關係拼接到一起;
  • 一個字串連線在一起。

舉點例子:

paste('hello','world','!')  #一堆單獨的字串拼接到一起
## [1] "hello world !"
paste(c('A','B','C'),c(1,2,3)) #兩個或者更多字串物件根據元素對應關係拼接到一起 ## [1] "A 1" "B 2" "C 3" paste(1:10) #一個字串連線在一起 ## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"

那麼兩個引數的用法是什麼樣的呢?

  • 當處理前兩種需求的時候用到的引數是sep,即多個字串之間的拼接;
  • 當處理第三種需求的時候用到的引數是collapse,即一個字串拼接的時候用什麼符號或者格式來連線;

舉點例子:

paste('hello','world','!')  #一堆單獨的字串拼接到一起,如果想用‘_’連線起來
paste('hello'
,'world','!',sep = '_')
## [1] "hello_world_!" paste(c('A','B','C'),c(1,2,3)) #兩個或者更多字串物件根據元素對應關係拼接到一起,如果想用‘-’連線起來 paste(c('A','B','C'),c(1,2,3),sep = '-') ## [1] "A-1" "B-2" "C-3" #此外需要注意的是如果傳入的兩個或多個物件的長度不一樣,對應關係會發生變化,比如 paste(c('A','B','C','D','E'),c(1,2),sep = '-') ## [1] "A-1" "B-2" "C-1" "D-2" "E-1" paste(1
:10)
#一個字串連線在一起,這第三種需求與上面很大的不同在於上面兩種需求傳入的都是多個物件,而第三種需求在函式的第一個引數位置上只傳入一個物件,如果需要用‘~’連線 paste(1:10, collapse = '~') ## [1] "1~2~3~4~5~6~7~8~9~10"

對於縮減版本的paste0有這樣的等式:

paste0(“a”, “b”) == paste(“a”, “b”, sep=”“)

個人覺得熟悉paste即可,畢竟paste功能更加豐富,用起來更加靈活。