6
votes

R: transformer les éléments de la liste en objets

J'ai une liste d'objets que j'ai créés manuellement, comme celui-ci: xxx pré>

Je travaille sur un code qui regroupe des objets et les met dans S3. Ensuite, j'ai du code dans EC2 que je souhaite saisir la liste MyObjects et le «le perturber» automatiquement. Dans cet exemple, la liste n'a que deux objets et les noms sont connus, mais comment le codez-moi pour gérer les listes de n'importe quelle longueur et n'importe quel nom? P>

#pseudo code
for each thing in myObjects
  thing <- myObjects[[thing]]


2 commentaires

Connexes: Stackoverflow. com / questions / 2590043 / ... , Stackoverflow.com/Questtions/2679193/... , Stackoverflow.com/Questtions/2899581/... , Stackoverflow.com/Questtions/2907896/...


Merci pour les liens Marek. Cela devient une «solution d'angle» de TRES pour la recherche. Une fois que je connais la fonction qui fait ce que je veux, il est tellement plus facile de trouver des questions connexes. Le bit vraiment dur consiste à comprendre comment s'y rendre avec une brève description du problème!


3 Réponses :


11
votes

Vous pouvez utiliser Attribuer : xxx


3 commentaires

Attribuer () ... c'est la pièce que j'étais manquante! Merci à vous et à Richie pour me diriger dans la bonne direction.


SEQ_ALONG (MYObjects) est un peu plus sûr si longueur (myObjects) == 0


@hadley: merci! SEQ_ALONG () est une excellente trouvaille. Comme dans les exemples suivants: Bad = pour (i in 1: longueur (null)) Imprimer (i) , bon = pour (i in seq_along (null)) Imprimer (i) < / code>



5
votes

Pour développer la réponse de Shane: xxx

(Vous pouvez souhaiter modifier globalenv () dans un autre environnement.)


2 commentaires

Très bonne idée des environnements changeants. Je devrais utiliser ça. C'est une idée de bonus!


Dans cet exemple, je vois que les objets Rand1 et Rand2 sont créés, mais il semble également de produire également l'objet MyObjects. Si j'ignore les résultats de ce maplicy () à un objet, je me retrouve avec une copie de MyObjects plus Rand1 et Rand2. Un peu bruyant et semble inefficace. Devrait-il être une saveur différente de s'appliquer?



8
votes

joindre (myObjects)


3 commentaires

J'avais fondamentalement pris des joints () de mon vocabulaire parce que j'ai constaté que la façon dont la plupart des gens utilisent des résultats dans un code de merde, difficile à suivre. Donc, je n'ai même pas pensé à l'utiliser dans ce cas. Mais maintenant que vous en parlez, je pense que c'est une très bonne solution. Merci de m'aider à penser à l'extérieur de ma petite boîte.


Je ne pense pas que ce soit une bonne idée d'utiliser Joindre. Mais si vous allez l'utiliser, utilisez-le, n'écrivez pas votre propre version de celui-ci.


Voir aussi: avec (myObjects, {...}) pour une alternative plus rapide et plus sûre à joindre .