Essayer d'effectuer une opération sur chaque colonne dans une trame de données. Pas sûr d'utiliser apply
ou for
(pas sûr de savoir comment ignorer la première colonne en apply
).R pour une boucle ou pour appliquer des colonnes de table de données
Question 1:
Pour imprimer simplement chaque nom deux fois j'ai compris:
for (i in names(dt)){if(str_length(i) < 3) {print(i);print(i)}}
Le premier nom de colonne est la seule avec une longueur de chaîne> 3, qui est la raison pour laquelle je utilisé ça.
J'ai essayé d'utiliser:
for (i in dt$i){if(str_length(names(i)) < 3) {print(i);print(i)}}
for (i in dt$i){if(str_length(names(dt)) < 3) {print(i);print(i)}}
Pour imprimer simplement deux fois par colonne, mais juste créé une valeur vide.
Question 2:
Ce que je fait faire au lieu d'imprimer deux fois; est de commander chaque colonne: order(-i)
??
Ensuite, créez un sous-ensemble: head(i, n=500)
??
Vous ne savez pas s'il s'agit d'une étape supplémentaire ou d'une extension de l'étape ci-dessus. Puis définissez cela comme un data.frame; dt(i) < data.frame(head(i, n=500))
??
Puis enregistrer cette table: write.csv(dt(i), "newfolder/i.csv", row.names = FALSE)
- Je pense que cela va remplacer constamment un fichier appelé i.csv, je ne sais pas comment je nommerais le fichier basé sur i.
Peut-être apply
est une meilleure approche, je ne suis pas sûr. Je simplifierais l'approche (telle que je comprends ce qui se passe) serait appréciée. J'ai seulement 40 colonnes, chacune avec 50 000 lignes, donc ça ne devrait pas être aussi lent.
EDIT
Essayer d'être plus clair, je vais ajouter un exemple:
Name Math Science PE
David 90 70 25
Tom 100 60 40
John 30 40 100
je voudrais terminer par 3 csv de avec la première recherche comme:
Name Math
Tom 100
David 90
Dans le cas ci-dessus n = 2 pour la tête. Le csv pourrait aussi avoir les autres colonnes, mais elles ne sont pas obligatoires.
'ne sais pas comment je le nom du fichier basé sur i . '- utiliser' paste0 ("myFile", i, ".csv") ' – zx8754
Votre message n'est pas très clair et peut-être fermé comme trop large. Veuillez ajouter les données d'entrée et la sortie attendue. 'apply' est juste une version prétendue de' for loop', donc c'est à vous de l'utiliser. – zx8754
Est-ce que mon édition était suffisante? –