Différence entre pâte () et paste0()

étant nouveau à R, est-ce que quelqu'un peut expliquer la différence entre paste() et paste0(), ce que j'avais compris de certains post, c'est que

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

Même j'ai essayé quelque chose comme ceci

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

en utilisant paste0()

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

Est-il juste que paste() utilise le séparateur entre les éléments et paste0() utilise le séparateur après les éléments?

29
demandé sur Michael Ohlrogge 2016-03-29 12:02:53

3 réponses

Comme expliqué dans ce blog par rem Rinker:

paste a 3 arguments.

paste (..., sep = " ", collapse = NULL)... est la chose que vous vous voulez coller ensemble et sep et collapse sont les gars pour l'obtenir faire. Il y a trois choses de base que je colle ensemble:

  • un tas de chaînes de caractères individuelles.
  • 2 ou plus cordes élément collé pour élément.
  • une ficelle écrasée ainsi.

voici un exemple de chacun, mais pas avec les bons arguments

paste("A", 1, "%") #un tas de chaînes de caractères individuelles.

paste(1:4, letters[1:4]) #2 ou plus cordes élément collé pour élément.

paste(1:10) #Une chaîne smushed ensemble. Voici l' règle de SEP / collapse pour chacun:

  • un tas de chaînes de caractères individuelles – vous voulez sep
  • 2 ou plus les chaînes élément collé à l'élément. - Vous voulez sep!--20-->
  • une corde s'est brisée.- Le Smushin doit s'effondrer!--20-->

paste0 est l'abréviation de: paste(x, sep="") elle nous permet d'être plus et plus efficace.

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

37
répondu SriniV 2017-07-17 08:11:19

Dans des mots simples,

paste() est comme la concaténation en utilisant le facteur de séparation, alors que,

paste0() est comme une fonction d'ajout utilisant un facteur de séparation.

ajout de quelques références supplémentaires à la discussion ci-dessus, les essais ci-dessous peuvent être utiles pour éviter la 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-"
8
répondu Supti Kanta Mohapatra 2017-07-16 06:43:14

Permettez-moi de le dire en des mots simples.. paste0 exclura automatiquement de l'espace dans votre concaténation..

par exemple, je veux créer un chemin D'entraînement et de test..voici le 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"
5
répondu Karthi V 2017-07-16 06:42:50