En R, je voudrais créer une boucle qui prend les 3000 premières colonnes de ma trame de données et les écrit dans un fichier, les 3000 colonnes suivantes dans un autre fichier, et ainsi de suite jusqu'à ce que toutes les colonnes aient été divisées en tant que telles. Quelle serait la meilleure façon de faire cela? Je comprends que les fonctions isplit et itérateurs sont maintenant disponibles via CRAN, mais je ne sais pas vraiment comment y arriver. Des suggestions s'il vous plaît?En R, comment créer une boucle pour diviser des colonnes dans une trame de données
Répondre
Vous pouvez essayer quelque chose comme:
library(plyr)
max.col <- ncol(x)
l_ply(seq(1, max.col, by=3000), function(i)
write.table(x[,i:min(i+2999, max.col)], file=paste("i", i, sep="-"))
)
Je ne sais pas pourquoi vous dérange pas le chargement plyr ... en supposant que votre trame de données est df ... (a volé la réponse de Shane l'utilisation rationnelle de min()
maxCol <- ncol(df)
for (i in seq(1, maxCol, by 3000)) {
write.table(df[,i:min(i+2999, maxCol)], "i")
}
Vous pouvez éditer la commande write.table ci-dessus pour l'ajouter dans votre formatage préféré.
'plyr' est inutile dans cet exemple (aurait pu utiliser presque n'importe quelle fonction apply), mais cela vaut la peine de le savoir en général (c'est pourquoi je l'ai utilisé pour la démonstration). Cela dit, les boucles «for» permettent des effets secondaires, donc j'essaie de les éviter à moins que je ne veuille encourager ce qui pourrait entraîner un «mauvais» comportement. – Shane
- 1. Réorganiser une trame de données en R
- 2. Comment diviser une trame de données?
- 3. comment créer la structure de données de trame avec des colonnes de données csv dans R?
- 4. Comment créer une boucle for dans R?
- 5. écrit à une trame de données à partir d'une boucle for en R
- 6. Saisie d'une colonne d'information dans une trame de données R.
- 7. R - Comment transformer une boucle en une fonction dans R
- 8. Filtrage d'une trame de données en R
- 9. Accès à des colonnes arbitraires à partir d'une trame de données R en utilisant with()
- 10. Vecteur/trame de données dans R
- 11. résultat de la cartographie des psycopg2 en trame de données pour R avec RPY2
- 12. R vérification des paires de lignes dans une trame de données
- 13. Comment grouper rapidement la colonne de temps dans une trame de données en intervalles?
- 14. trame de données produit cartésien R
- 15. Colonnes de correspondance, création de boucle dans R
- 16. Suppression d'une catégorie particulière d'une trame de données en R
- 17. Comment diviser une seule ligne en plusieurs colonnes dans mysql
- 18. Itération sur les noms de colonnes dans une trame de données
- 19. Comment UNPIVOT pour diviser des colonnes en rangées?
- 20. convertir une liste hiérarchique inégale en une trame de données
- 21. Boucle dans R pour créer et enregistrer des séries de graphiques ggplot2 avec les noms spécifiés
- 22. Transformer des données R en utilisant des variables dans la boucle
- 23. R: convertir un objet xts ou zoo en une trame de données
- 24. Comment diviser un vecteur en deux colonnes pour créer des paires ordonnées pour l'assignation aléatoire
- 25. Application de pnorm aux colonnes d'une trame de données
- 26. Modifier le contenu d'une trame de données dans R
- 27. une colonne de date dans une trame de données
- 28. Résumant enregistrements regroupés dans une trame de données
- 29. Extraire les valeurs de la trame de données dans R
- 30. R: Comment séparer les sorties de caractères dans une boucle?
Merci Shane pour la réponse de retour! J'ai essayé cela, le résultat est un seul fichier intitulé "i" avec 2456 colonnes - que je suppose est la dernière itération de la boucle? Ma question de suivi est comment puis-je maintenant modifier ce code de telle sorte que je peux donner des noms individuels à chacun des fichiers qui sont sortis? Par exemple "i-1", "i-2", "i-3" Merci beaucoup pour toute votre aide, cela a été très utile! Je suis un débutant absolu avec la programmation/codage. – CCA
Désolé ... mon erreur. Je l'ai mis à jour pour refléter votre convention de nommage de sortie. – Shane
Merci Shane! Un autre suivi rapide - Si je voulais sortir chacun de ces fichiers dans des dossiers spécifiques - disons "i-1" va dans le dossier "A-1", "i-2" va dans le dossier "A-2" dans un ordre séquentiel - - Y a-t-il un moyen de le spécifier dans l'instruction file = paste? Ou devrais-je écrire tous les fichiers dans un dossier et ensuite trouver un moyen de les copier/déplacer dans les dossiers associés après? J'essaie d'éviter cela manuellement, car à la fin il y aura des centaines de tels fichiers. Merci encore une fois pour vos réponses détaillées et rapides - très appréciées! – CCA