la conversion d'une matrice à une liste
Supposons que j'ai une matrice foo
comme suit:
foo <- cbind(c(1,2,3), c(15,16,17))
> foo
[,1] [,2]
[1,] 1 15
[2,] 2 16
[3,] 3 17
Je voudrais la transformer en une liste qui ressemble à
[[1]]
[1] 1 15
[[2]]
[1] 2 16
[[3]]
[1] 3 17
Vous pouvez le faire comme suit:
lapply(apply(foo, 1, function(x) list(c(x[1], x[2]))), function(y) unlist(y))
Je suis intéressé par une méthode alternative qui n'est pas aussi compliqué. Remarque, si vous n'avez apply(foo, 1, function(x) list(c(x[1], x[2])))
, il renvoie une liste dans une liste qui, je l'espère pour éviter.
OriginalL'auteur andrewj | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
Voici une solution plus propre:
Qui tire parti du fait qu'une trame de données est vraiment juste une liste de longueur égale vecteurs (alors que la matrice est vraiment un vecteur qui est affiché avec des colonnes et des lignes...vous pouvez voir en appelant foo[5], par exemple).
Vous pourriez aussi le faire, bien qu'il n'est pas beaucoup d'une amélioration:
as.list()
méthode est parfaite. Et aussi beaucoup plus rapide que ma méthode (0.847 s v. 2.45 s).OriginalL'auteur Shane
OriginalL'auteur hadley