R語言中c()函數與paste()函數的區別說明

c()函數:將括號中的元素連接起來,並不創建向量

paste()函數:連接括號中的元素

例如

c(1, 2:4),結果為1 2 3 4

paste(1, 2:4),結果為“1 2” “1 3” “1 4”

c(2, “and”),結果為“2” “and”

paste(2, “and”),結果為“2 and”

補充: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功能更加豐富,用起來更加靈活。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。