10
votes

Obtenir des noms de liste dans la boucle

en PHP Vous pouvez accéder à la fois aux noms et aux valeurs d'un tableau dans A pour la boucle avec xxx

y a-t-il comparable dans R, lors de la boucle sur les listes nommées? < / p>


4 commentaires

Pouvez-vous être un peu plus spécifique quant à savoir si vous êtes en boucle sur une liste avec un pour boucle ou avec quelque chose comme lapply dans r? Peut-être un exemple très fondamental (en code R)?


@Joran: questions clarifiées. Oui, en boucle sur les listes. Je ne peux pas utiliser la marquage dans cette instance spécifique. J'ai posé une question connexe ici: Stackoverflow.com/Questtions/11112842/...


D'accord; Vous obtenez uniquement le Vanilla pour Syntaxe de boucle dans R. Généralement, vous vous référez à chaque pièce (nom + élément) en sous-sortisant soit noms (myList) ou MyList avec votre index de boucle i .


@Joran: Oui, OK, peut-être que c'est la seule réponse. Je viens de réaliser que pour les listes de listes (un exemple de cette affaire), vous pouvez utiliser plusieurs fonctions * Appliquer, par exemple résultat <- labraque (soméliquement, active, appliquer, 2, somme) fonctionne avec un Liste des listes de matrices. Mais cela ne fonctionnera pas si vous devez appliquer un non- * Appliquer une fonction quelque part au milieu (par exemple, leaply (soméliste, as.data.frame, active, appliquer, 2, somme) ne fonctionne pas).


3 Réponses :


9
votes

Utilisation des données factices et un exemple de contrefaçon idiot

ll2 <- vector("list", length(ll))
nams <- names(ll)
for(i in seq_along(ll)) {
    ll2[[i]] <- paste(nams[i], "=", paste(ll[[i]], collapse = ", "))
}
ll2

R> ll2
[[1]]
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10"

[[2]]
[1] "B = A, B, C, D, E, F, G, H, I, J"

[[3]]
[1] "C = a, b, c, d, e, f, g, h, i, j"


0 commentaires

3
votes

Pour obtenir le nom d'une liste que vous utilisez simplement noms (liste) . xxx

la plupart des fonctions * Appliquer va renvoyer des valeurs de manière appropriée si La liste a été nommée pour commencer. xxx


0 commentaires

12
votes

Voici un moyen plus simple de le faire:

for (name in names(myList)) {
    print(name)
    print(myList[[name]])
}


0 commentaires