Domanda Differenza tra paste () e paste0 ()


Essendo nuovo di R, qualcuno può spiegare la differenza tra paste() e paste0(), quello che avevo capito da qualche post è quello

paste0("a", "b") === paste("a", "b", sep="")

Anche io ho provato qualcosa di simile

a <- c("a","b","c")
b <- c("y","w","q")
paste(a,b,sep = "_")
**output**
"a_y" "b_w" "c_q"

utilizzando paste0()

a <- c("a","b","c")
b <- c("y","w","q")
paste0(a,b,sep = "_")
**output**
"ay_" "bw_" "cq_"

È solo questo paste() usa il separatore tra gli elementi e paste0() usa il separatore dopo gli elementi?


28
2018-03-29 09:02


origine


risposte:


Come spiegato in questo blog di Tyler Rinker:

paste ha 3 argomenti.

paste (..., sep = " ", collapse = NULL) Il ... è roba te   voglio incollare insieme e sep e crollare sono i ragazzi a prenderlo   fatto. Ci sono tre cose fondamentali che incolli insieme:

  • Un mucchio di stringhe di caratteri individuali.
  • 2 o più stringhe incollate per elemento.
  • Una corda ha addolcito insieme.

Ecco un esempio di ciascuno, sebbene non con gli argomenti corretti

paste("A", 1, "%")       #Un mazzo di stringhe di caratteri individuali.

paste(1:4, letters[1:4]) # 2 o più elementi incollati per le stringhe   elemento.

paste(1:10)              #Una corda appesa insieme. Ecco il   sep / crolla regola per ciascuno:

  • Un sacco di stringhe di caratteri individuali - Vuoi sett
  • 2 o più stringhe incollate per elemento. - Vuoi sett
  • Una corda ha attaccato insieme. Smushin richiede il collasso

paste0 è l'abbreviazione di: paste(x, sep="") Quindi ci permette di essere più pigri   e più efficiente.

paste0("a", "b") == paste("a", "b", sep="") ## [1] TRUE


36
2018-03-29 09:31



In parole semplici,

paste() è come la concatenazione usando il fattore di separazione, mentre,

paste0() è come aggiungere la funzione usando il fattore di separazione.

Aggiungendo qualche altro riferimento alla discussione sopra, sotto i try out può essere utile per evitare confusione:

> paste("a","b")  #Here default separation factor is " " i.e. a space

[1] "a b"  

> paste0("a","b") #Here default separation factor is "" i.e a null

[1] "ab"

> paste("a","b",sep="-")

[1] "a-b"

> paste0("a","b",sep="-")

[1] "ab-"

> paste(1:4,"a")

[1] "1 a" "2 a" "3 a" "4 a"

> paste0(1:4,"a")

[1] "1a" "2a" "3a" "4a"

> paste(1:4,"a",sep="-")

[1] "1-a" "2-a" "3-a" "4-a"

> paste0(1:4,"a",sep="-")

[1] "1a-" "2a-" "3a-" "4a-"

7
2017-07-16 04:37



Lasciatemelo mettere in parole semplici .. paste0 escluderà automaticamente lo spazio nella tua concatenazione ..

Ad esempio, voglio creare un percorso di addestramento e test ... c'è il codice ..

> Curr_date=format(Sys.Date(),"%d-%b-%y")

> currentTrainPath = paste("Train_",Curr_date,".RData")

> currentTrainPath

[1] "Train_ 11-Jun-16 .RData"

> Curr_date=format(Sys.Date(),"%d-%b-%y")

> currentTrainPath = paste0("Train_",Curr_date,".RData")

> currentTrainPath

[1] "Train_11-Jun-16.RData"

5
2018-06-11 05:18