convertir un vecteur à une liste
J'ai un vecteur comme ce
c("1", "a","b")
et j'aimerais créer cette liste
list("a"=1,"b"=1)
est-il un moyen de le faire dans un "appliquer" style? Merci.
-k
Salut Khanh -- valeur de un, deux étiquettes? Qui semble étrange.
J'ai besoin d'un coup d'oeil rapide, comme une table de hachage. Dans ce cas, "a" et "b" sont des nœuds dans un réseau, et 1 est leur communauté id. Est-il efficace?
J'ai besoin d'un coup d'oeil rapide, comme une table de hachage. Dans ce cas, "a" et "b" sont des nœuds dans un réseau, et 1 est leur communauté id. Est-il efficace?
OriginalL'auteur knguyen | 2010-12-08
Vous devez vous connecter pour publier un commentaire.
Comme ça?
Avec bravo à Gavin pour repérer plus tôt
erreur.
lapply
étape de réécriturenl
paramètre noms avant qu'il ne soit pas leur faire coller?J'ai littéralement copié ce qui a fonctionné dans ma coquille.
Euh, non, vous étiez tout à fait correct. Fixe, re-dirigé et édité. Merci pour le spotting.
noms(nl) <- kn[-1] à la place. Merci.
Il a encore besoin de
as.numeric(kn[1])
dans la fonction anonyme - même problème que j'avais avec ma réponse @Joshua Ulrich souligné.OriginalL'auteur Dirk Eddelbuettel
À l'aide de
as.list
etsetNames
:depuis que j'ai découvert à cette question, en cherchant une solution pour le cas plus général de la conversion d'un vecteur à un nom de liste, je voulais juste ajouter que vous pouvez également le faire si vous n'avez pas l'esprit les noms étant le même que le contenu:
as.list(setNames(x,x))
OriginalL'auteur Charles
Ce n'est pas une applique de style, mais d'une simple fonction d'envelopper les commandes requises:
À l'aide de votre vecteur, il donne:
as.numeric
le "1"oups! Bien repéré.
OriginalL'auteur Gavin Simpson
Pour être complet, il est plus simple one-liner de le faire dans un "appliquer" style comme demandé:
Alors que pas l'option la plus rapide, c'est sûrement soigné assez pour mériter sa place comme une réponse à la question. Une augmentation considérable de la vitesse est possible par pas inutilement, pour simplifier à un vecteur:
as.list(sapply(...))
, utilisezsapply(..., simplify=FALSE)
.Sans simplifier=F, nous aurons identiques(Charles,Anon)=FAUX, je ne voulais pas. Avec de simplifier=F, votre suggestion amène davantage de vitesse- - - - j'ai mis à jour ma réponse. Merci.
OriginalL'auteur andrekos