c()函數(shù):將括號(hào)中的元素連接起來(lái),并不創(chuàng)建向量
paste()函數(shù):連接括號(hào)中的元素
例如
c(1, 2:4),結(jié)果為1 2 3 4
paste(1, 2:4),結(jié)果為“1 2” “1 3” “1 4”
c(2, "and"),結(jié)果為“2” “and”
paste(2, "and"),結(jié)果為“2 and”
補(bǔ)充:R語(yǔ)言中paste函數(shù)的參數(shù)sep和collapse詳解
R語(yǔ)言用于拼接字符串的函數(shù)主要有兩個(gè):
1
2
|
paste (..., sep = " " , collapse = NULL) paste0(..., collapse = NULL) |
其中paste0函數(shù)式paste函數(shù)的縮減版本,少了一個(gè)參數(shù)sep。參數(shù)中的......表示的是想要拼接的對(duì)象,后面的參數(shù)表示拼接的方式。
通常對(duì)于字符串拼接我們有三種需求:
一堆單獨(dú)的字符串拼接到一起;
兩個(gè)或者更多字符串對(duì)象根據(jù)元素對(duì)應(yīng)關(guān)系拼接到一起;
一個(gè)字符串連接在一起。
舉點(diǎn)例子:
1
2
3
4
5
6
|
paste ( 'hello' , 'world' , '!' ) #一堆單獨(dú)的字符串拼接到一起 ## [1] "hello world !" paste (c( 'A' , 'B' , 'C' ),c(1,2,3)) #兩個(gè)或者更多字符串對(duì)象根據(jù)元素對(duì)應(yīng)關(guān)系拼接到一起 ## [1] "A 1" "B 2" "C 3" paste (1:10) #一個(gè)字符串連接在一起 ## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" |
那么兩個(gè)參數(shù)的用法是什么樣的呢?
當(dāng)處理前兩種需求的時(shí)候用到的參數(shù)是sep,即多個(gè)字符串之間的拼接;
當(dāng)處理第三種需求的時(shí)候用到的參數(shù)是collapse,即一個(gè)字符串拼接的時(shí)候用什么符號(hào)或者格式來(lái)連接;
舉點(diǎn)例子:
1
2
3
4
5
6
7
8
9
10
11
12
|
paste ( 'hello' , 'world' , '!' ) #一堆單獨(dú)的字符串拼接到一起,如果想用‘_'連接起來(lái) paste ( 'hello' , 'world' , '!' ,sep = '_' ) ## [1] "hello_world_!" paste (c( 'A' , 'B' , 'C' ),c(1,2,3)) #兩個(gè)或者更多字符串對(duì)象根據(jù)元素對(duì)應(yīng)關(guān)系拼接到一起,如果想用‘-'連接起來(lái) paste (c( 'A' , 'B' , 'C' ),c(1,2,3),sep = '-' ) ## [1] "A-1" "B-2" "C-3" #此外需要注意的是如果傳入的兩個(gè)或多個(gè)對(duì)象的長(zhǎng)度不一樣,對(duì)應(yīng)關(guān)系會(huì)發(fā)生變化,比如 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) #一個(gè)字符串連接在一起,這第三種需求與上面很大的不同在于上面兩種需求傳入的都是多個(gè)對(duì)象,而第三種需求在函數(shù)的第一個(gè)參數(shù)位置上只傳入一個(gè)對(duì)象,如果需要用‘~'連接 paste (1:10, collapse = '~' ) ## [1] "1~2~3~4~5~6~7~8~9~10" |
對(duì)于縮減版本的paste0有這樣的等式:
1
|
paste0(“a”, “b”) == paste (“a”, “b”, sep=”“) |
個(gè)人覺得熟悉paste即可,畢竟paste功能更加豐富,用起來(lái)更加靈活。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/yiyu_j/article/details/87371288