str_c avec répétition

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

VERDIER Guillaume
Messages : 11
Enregistré le : 11 Jan 2020, 20:27

str_c avec répétition

Messagepar VERDIER Guillaume » 05 Oct 2020, 15:19

Bonjour,
Comment concatener deux chaines avec répétition, comme suit

Code : Tout sélectionner

x <- c("a", "b", "c")
y <- c("u", "v", "w")

str_c(x,y) renvoit "au" "bv" "cw" alors que je voudrais obtenir "au" "av" "aw" "bu" "bv" "bw" "cu" "cv" "cw"
Merci d'avance

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: str_c avec répétition

Messagepar Pierre-Yves Berrard » 05 Oct 2020, 15:29

Une idée (pas très jolie) :

Code : Tout sélectionner

apply(expand.grid(xy), 1pastecollapse ""
PY

VERDIER Guillaume
Messages : 11
Enregistré le : 11 Jan 2020, 20:27

Re: str_c avec répétition

Messagepar VERDIER Guillaume » 05 Oct 2020, 15:34

merci ça fonctionne parfaitement - l'absence de beauté de ce code m'échappe totalement je l'avoue :)

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: str_c avec répétition

Messagepar Pierre-Yves Berrard » 05 Oct 2020, 15:52

C'est juste qu'en général, je n'utilise `apply` qu'en dernier recours...

Sinon, je ne sais pas si l'ordre est important, mais si vous voulez celui de votre message initial, ce serait plutôt :

Code : Tout sélectionner

apply(expand.grid(yx), 1, function(.) paste0(.[2], .[1])) 
PY

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: str_c avec répétition

Messagepar Logez Maxime » 07 Oct 2020, 06:31

Bonjour,

Dans le même genre tu as la fonction outer :

Code : Tout sélectionner

sort(outer(x, y, paste0))
[1] "au" "av" "aw" "bu" "bv" "bw" "cu" "cv" "cw"

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité