web-dev-qa-db-fra.com

Différence entre paste () et paste0 ()

Étant nouveau pour R, quelqu'un peut-il s'il vous plaît expliquer la différence entre paste() et paste0(), ce que j'avais compris de certains posts, c'est que

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

Même j'ai essayé quelque chose comme ça

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-ce juste que paste() utilise un séparateur entre les éléments et que paste0() utilise un séparateur après les éléments?

35
deepesh

Comme expliqué dans ce blog de Tyler Rinker :

paste a 3 arguments.

paste (..., sep = " ", collapse = NULL) Le ... est ce que vous voulez coller ensemble et les séparer et le réduire sont les moyens de le faire. Je colle trois éléments de base ensemble:

  • Un tas de chaînes de caractères individuelles.
  • 2 chaînes ou plus, élément collé pour élément.
  • Une ficelle s'est collée.

Voici un exemple de chacun, mais pas avec les arguments corrects

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

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

paste(1:10) #Une chaîne a fusé. Voici la règle sep/collapse pour chacun:

  • Un tas de chaînes de caractères individuelles - Vous voulez sep
  • 2 chaînes ou plus, élément collé pour élément. - Tu veux sep
  • Une ficelle s'estompée.- Smushin nécessite un effondrement

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

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

42
SriniV

En des mots simples,

paste() est comme une concaténation utilisant un facteur de séparation, alors que

paste0() est comme une fonction add en utilisant un facteur de séparation.

Ajouter quelques références supplémentaires à la discussion ci-dessus, les essais suivants peuvent être utiles pour éviter toute 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-"
13

Permettez-moi de le dire avec des mots simples .. paste0 exclura automatiquement l’espace de votre concaténation.

Par exemple, je veux créer un parcours de formation 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"
6
Karthi V