2017-06-02 1 views
1

J'ai frappé des murs en essayant d'écrire les résultats d'une boucle à un csv. J'essaie de classer les données dans chacune des 20 colonnes. La boucle que j'utilise est:écrire le résultat de la boucle de rang dans r

for (i in 1:ncol(testing_file)) { 
    print(rank(testing_file[[i]])) 
} 

Cela fonctionne et imprime les résultats attendus à l'écran. J'ai essayé beaucoup de méthodes suggérées dans diverses discussions pour écrire ce résultat au dossier ou à la trame de données, la plupart sans chance. Je vais juste inclure mon avance la plus prometteuse, qui retourne une seule colonne de données correctes, avec une tête de colonne de « testing »:

for (i in 1:ncol(testing_file)) { 
    testing<- (rank(testing_file[[i]])) 
    testingdf <- as.data.frame(testing) 
} 

Toute aide est grandement appréciée!

Répondre

0

Je suis mauvaise avec des boucles imbriquées, donc je vais essayer:

testing_file <- data.frame(x = 1:5, y = 15:11) 
testing <- as.data.frame(lapply(seq_along(testing_file), function (x) 
rank(testing_file[, x]))) 

> testing_file 
x y 
1 1 15 
2 2 14 
3 3 13 
4 4 12 
5 5 11 

et vous permet de bénéficier de boucles imbriquées en désordre. Vouliez-vous vérifier les résultats de rank() avant d'écrire en csv?

ou tout simplement envelopper dans un write.csv, les colnames seront les colnames df d'origine:

> write.csv(testing <- as.data.frame(lapply(seq_along(testing_file), 
function (x) rank(testing_file[, x]))), "testing.csv", quote = FALSE) 
+0

Merci pour les suggestions. J'ai essayé ces options mais j'obtiens l'erreur: Utilisation non supportée de la matrice ou du tableau pour l'indexation des colonnes – Crissy

+0

J'ai trouvé une solution qui fonctionne: testage <- data.frame (matrix (, nrow = 73, ncol = 20)) pour (i en 1: ncol (testing_file)) { testage [i] <- rang (testing_file [[i]]) impression (testage [i]) } colnames (testage) <- colnames (testing_file) – Crissy

1

J'ai trouvé une solution qui fonctionne:

testage<- data.frame(matrix(, nrow=73, ncol=20)) #This creates an empty data 
frame that the ranked results will go into 
for (i in 1:ncol(testing_file)) { 
testage[i] <- rank(testing_file[[i]]) 
print(testage[i]) 
} #this is the loop that ranks data within each column 
colnames(testage) <- colnames(testing_file) #take the column names from the 
original file and apply them to the ranked file. 
+0

Et Je pense que maintenant vous acceptez votre réponse. À votre santé. – Chris