Difference between paste() and paste0()

邮差的信 提交于 2019-12-03 04:06:48

问题


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?


回答1:


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




回答2:


In simple words,

paste() is like concatenation using separation factor, whereas,

paste0() is like append function using separation factor.

Adding some more references to above discussion, below try outs can be useful to avoid confusion:

> 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-"



回答3:


Let me put it in a simple words.. paste0 will automatically exclude the space in your concatenation..

For Example, I want to create a Training and test path..here's the code..

> 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"


来源:https://stackoverflow.com/questions/36279800/difference-between-paste-and-paste0

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!