Concaténation Char + liste

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

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Concaténation Char + liste

Messagepar Christophe Genolini » 17 Nov 2008, 15:46

Bonjour,

J'ai un vecteur de n caracteres et une liste de n vecteur de nombre :

Code : Tout sélectionner

v <-c("R","T")
t <- list(c(1,3),c(2,4,6))


Je voudrais concatener l'un et l'autre pour obtenir :

Code : Tout sélectionner

c(paste(v[1],t[[1]],sep=""),paste(v[2],t[[2]],sep=""))
# [1] "R1" "R2" "P4" "P5" "P6"


Sauf que la, j'ai triché, j'ai fait a la main en sachant que n=2. Une solution pour n quelconque ?

Christophe

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 17 Nov 2008, 16:24

bonjour

voici une solution à l'emporte-pièce:

Code : Tout sélectionner

> v <-c("R","T")
> t <- list(c(1,3),c(2,4,6))
> c(paste(v[1],t[[1]],sep=""),paste(v[2],t[[2]],sep=""))
[1] "R1" "R3" "T2" "T4" "T6"
> unlist(sapply(1:length(v),function(x) paste(v[x],t[[x]],sep="")))
[1] "R1" "R3" "T2" "T4" "T6"
>


HTH

@++

pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Messagepar jean lobry » 17 Nov 2008, 16:54

Bonjour,

une autre soluce possible :

Code : Tout sélectionner

 paste(rep(v, sapply(t, length)), unlist(t), sep = "")
[1] "R1" "R3" "T2" "T4" "T6"

Amicalement,

Jean

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Messagepar Christophe Genolini » 17 Nov 2008, 19:50

Super, merci

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Messagepar Christophe Genolini » 17 Nov 2008, 20:22

A bien y regarder, vos solutions sont plutot proches. En bref, vous prenez tous les deux paste, sapply, unlist, sep, length... Faut juste trouver le bon ordre !

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

Messagepar Logez Maxime » 19 Nov 2008, 11:25

Bonjour,

une autre possibilité :

Code : Tout sélectionner

names(t) <- v
with(stack(t),paste(ind,values,sep=""))


C'était juste pour la fonction stack qui peut être utile dans d'autre cas.

Maxime

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Messagepar jean lobry » 19 Nov 2008, 12:06

Bonjour,

encore une autre soluce :

Code : Tout sélectionner

unlist(mapply(paste, v, t, sep = ""))

Amicalement,

Jean


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités