Difference between paste() and paste0()

deepesh picture deepesh · Mar 29, 2016 · Viewed 64.5k times · Source

Being new to R, can someone please explain the difference between paste() and paste0(), what I had understood from some post is that

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

Even I tried something like this

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

using paste0()

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

Is it just that paste() uses separator between elements and paste0() uses separator after the elements?

Answer

SriniV picture SriniV · Mar 29, 2016

As explained in this blog by Tyler Rinker:

paste has 3 arguments.

paste (..., sep = " ", collapse = NULL) The ... is the stuff you want to paste together and sep and collapse are the guys to get it done. There are three basic things I paste together:

  • A bunch of individual character strings.
  • 2 or more strings pasted element for element.
  • One string smushed together.

Here's an example of each, though not with the correct arguments

paste("A", 1, "%") #A bunch of individual character strings.

paste(1:4, letters[1:4]) #2 or more strings pasted element for element.

paste(1:10) #One string smushed together. Here's the sep/collapse rule for each:

  • A bunch of individual character strings – You want sep
  • 2 or more strings pasted element for element. – You want sep
  • One string smushed together.- Smushin requires collapse

paste0 is short for: paste(x, sep="") So it allows us to be lazier and more efficient.

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