2013-08-21 4 views
0

Je veux lier des vecteurs de longueurs différentes. J'ai regardé this thread, mais il n'est pas clair à ce sujet comment je peux faire une matrice/liste en utilisant append ou cbind.Liaison de vecteurs de longueur variable R

À titre d'exemple, Prenons 2 vecteurs aléatoires de longueurs différentes:

> b<-sample(10,5) 
> d<-sample(10,10) 

fonctionne maintenant cbind sur eux répétera le vecteur plus petit à tout ce qui est possible,

> cbind(b,d) 
     b d 
[1,] 3 7 
[2,] 5 4 
[3,] 10 3 
[4,] 4 2 
[5,] 6 5 
[6,] 3 8 
[7,] 5 6 
[8,] 10 10 
[9,] 4 9 
[10,] 6 1 

Si je tente de faire ajouter,

> append(b,d) 
[1] 3 5 10 4 6 7 4 3 2 5 8 6 10 9 1 

Il ajoute les deux vecteurs dans 1 Une solution plus longue consistera à sauvegarder les longueurs de vecteurs dans un vecteur différent et à extraire les vecteurs de ce vecteur consolidé avec une boucle, en utilisant le vecteur de longueur. Mais y a-t-il une meilleure façon de le faire? Parce que je veux mettre cette matrice/liste plus grande dans une fonction, ce qui deviendra plus facile si je n'utilise pas cette méthode basée sur le vecteur de longueur.

+1

Quelle est votre sortie désirée? – dayne

+0

Une matrice ou une liste contenant des vecteurs de longueurs variables, que je rejoins dans une boucle. –

+0

Vous ne pouvez pas créer de matrices dentelées dans R. Vous devez donner une certaine valeur aux cellules manquantes. Vous pouvez créer une liste de vecteurs. 'some.list <- list (b = b, d = d)', puis utilisez la liste pour boucler/appliquer pour faire vos calculs. Que faites-vous avec la matrice/liste souhaitée? – dayne

Répondre

1
set.seed(1) 
b <- rnorm(10,2,4) 
d <- rnorm(50,5,3) 
f <- rnorm(100,1,0.5) 
example <- list(b=b,d=d,f=f) 
for(i in paste("var",1:3)){ 
    example[[i]] <- rnorm(sample(100,1),mean=sample(5,1),sd=sample(3,1)) 
} 
boxplot(example) 

enter image description here

+0

Je dois ajouter à cette liste sur une boucle, ajoutera (exemple , x) travailler dans une boucle? Il fait actuellement de chaque élément de x un élément unique de la liste. –

+0

@SahilM Voir la modification. Vous pouvez ajouter des éléments à une liste avec une boucle. Vous devriez probablement passer du temps à lire sur les listes en r. – dayne

+0

Merci, cela fonctionne pour moi! :) –

Questions connexes