For-Loop στο R DataFrame

For Loop Sto R Dataframe



Ο βρόχος for είναι μια δομή ελέγχου που μας δίνει τη δυνατότητα να επαναλάβουμε ένα σύνολο εντολών σε καθορισμένο αριθμό φορών. Είναι μια ευρέως χρησιμοποιούμενη μέθοδος για επανάληψη στο R, ειδικά όταν χρειάζεται να εκτελέσουμε την ίδια λειτουργία σε ορισμένα στοιχεία ή να επαναλάβουμε μια δομή δεδομένων όπως αυτή στο DataFrame. Σειρές και στήλες αποτελούν τα DataFrames στο R όπου κάθε σειρά αντιπροσωπεύει μια ενιαία παρατήρηση και κάθε στήλη υποδηλώνει μια μεταβλητή ή μια πτυχή αυτής της παρατήρησης.

Με αυτό το συγκεκριμένο άρθρο, χρησιμοποιούμε έναν βρόχο για επανάληψη στο DataFrame σε διαφορετικές προσεγγίσεις. Λάβετε υπόψη ότι η επανάληψη του βρόχου for-loop σε γραμμές και στήλες μπορεί να είναι εξαιρετικά υπολογιστική για μεγάλα DataFrame.







Παράδειγμα 1: Χρήση For-Loop Over DataFrame σειρές στο R

Ο βρόχος for στο R μπορεί να χρησιμοποιηθεί για επανάληψη πάνω από τις σειρές ενός DataFrame. Μέσα στον βρόχο for, μπορούμε να χρησιμοποιήσουμε το ευρετήριο σειράς για να αποκτήσουμε πρόσβαση σε κάθε γραμμή του DataFrame. Ας εξετάσουμε τον ακόλουθο κώδικα R που είναι η επίδειξη του βρόχου for-loop για επανάληψη στις σειρές του καθορισμένου DataFrame.



data = data.frame(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i in 1:nrow(data)) {

σειρά <- δεδομένα[i, ]

εκτύπωση (σειρά)

}

Εδώ, ορίζουμε πρώτα τη συνάρτηση data.frame() μέσα στα “data”. Η συνάρτηση data.frame() εδώ περιέχει τρεις στήλες. Κάθε στήλη ορίζεται με μια ακολουθία αριθμών από το 1 έως το 5, από το 6 έως το 10 και από το 11 έως το 15, αντίστοιχα. Μετά από αυτό, αναπτύσσεται η συνάρτηση for-loop, η οποία επαναλαμβάνεται πάνω από τις σειρές των «δεδομένων» του DataFrame χρησιμοποιώντας τη συνάρτηση nrow() για να ληφθεί ο συνολικός αριθμός σειρών. Η μεταβλητή βρόχου, 'i', παίρνει τις τιμές σε ολόκληρο τον αριθμό των σειρών στα 'δεδομένα'.



Στη συνέχεια, εξάγουμε την i-η σειρά των «δεδομένων» του DataFrame χρησιμοποιώντας τον συμβολισμό σε αγκύλες «[ ]». Η εξαγόμενη σειρά αποθηκεύεται σε μια μεταβλητή 'row' που θα εκτυπωθεί από τη συνάρτηση print().





Ως εκ τούτου, ο βρόχος επαναλαμβάνεται σε όλες τις σειρές στο DataFrame και εμφανίζει τους αριθμούς σειρών στην έξοδο μαζί με τις τιμές της στήλης.



Παράδειγμα 2: Χρήση στηλών For-Loop Over DataFrame

Ομοίως, μπορούμε να χρησιμοποιήσουμε τον βρόχο for στο R για να κάνουμε βρόχο πάνω από τις στήλες του καθορισμένου πλαισίου δεδομένων. Μπορούμε να χρησιμοποιήσουμε τον προηγούμενο κώδικα για να κάνουμε βρόχο πάνω από τις στήλες, αλλά πρέπει να χρησιμοποιήσουμε τη συνάρτηση ncol() στον βρόχο for. Αντίθετα, έχουμε την απλούστερη προσέγγιση για να κάνουμε βρόχο πάνω από τις στήλες του DataFrame χρησιμοποιώντας βρόχο for. Εξετάστε τον ακόλουθο κώδικα R για αυτό:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

col2 = c(11, 21, 31, 41, 51),

col3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

στήλη <- df[[col]]

εκτύπωση (στήλη)

}

Εδώ, δημιουργούμε πρώτα τη μεταβλητή df όπου χρησιμοποιείται η data.frame() με την εισαγωγή στηλών. Το 'df' DataFrame περιέχει τρεις στήλες που περιέχουν αριθμητικές τιμές. Στη συνέχεια, χρησιμοποιούμε έναν βρόχο for για να επαναλάβουμε τα ονόματα των στηλών του DataFrame 'data' χρησιμοποιώντας τη συνάρτηση colnames(). Σε κάθε επανάληψη, η μεταβλητή βρόχου 'col' παίρνει το όνομα της τρέχουσας στήλης. Στη συνέχεια, η εξαγόμενη στήλη αποθηκεύεται σε μια νέα μεταβλητή που είναι 'στήλη'.

Έτσι, τα δεδομένα της μεταβλητής 'στήλη' εκτυπώνουν την έξοδο στην ακόλουθη κονσόλα:

Παράδειγμα 3: Χρήση For-Loop σε ολόκληρο το DataFrame

Στα προηγούμενα παραδείγματα, κάναμε βρόχο πάνω από τις στήλες και τις γραμμές χρησιμοποιώντας τον βρόχο for, αντίστοιχα. Τώρα, χρησιμοποιούμε τους ένθετους βρόχους for για να επαναλάβουμε και τις δύο γραμμές και στήλες ενός DataFrame, ταυτόχρονα. Ο κωδικός του R παρέχεται στα ακόλουθα όπου ο ένθετος βρόχος for χρησιμοποιείται πάνω από τις στήλες και τις γραμμές:

εργαζόμενοι <- data.frame(id=1:4,

names=c('kim', 'John', 'Ian', 'Mark'),

location=c('Αυστραλία', 'Αμερική', 'Καναδάς', 'Ιορδανία'),

μισθός=c(2000, 1800, 1500, 1000))

για (σειρά σε 1:nrow(υπάλληλοι)) {

for (col in 1:ncol(employees)) {

print(επικόλληση('Ευρετήριο γραμμής', σειρά, 'όνομα στήλης', στήλη, 'τιμή κελιού', εργαζόμενοι[σειρά, στήλη]))

}

}

Εδώ, δηλώνουμε τη μεταβλητή “employees” όπου η data.frame() καλείται να ορίσει τις στήλες. Οι τιμές σε κάθε στήλη καθορίζονται χρησιμοποιώντας διανύσματα. Στη συνέχεια, για τη γραμμή και τη στήλη του DataFrame 'υπάλληλοι', χρησιμοποιούμε δύο ένθετους βρόχους for για να επαναλάβουμε τα δεδομένα. Ο εξωτερικός βρόχος επαναλαμβάνεται πάνω από τις σειρές του καθορισμένου DataFrame χρησιμοποιώντας το '1:nrow(employees)'. Για κάθε γραμμή, το '1:ncol(εργαζόμενοι)' χρησιμοποιείται στον εσωτερικό βρόχο για επανειλημμένη επανάληψη πάνω από τις στήλες του DataFrame.

Μετά από αυτό, έχουμε μια συνάρτηση print() μέσα στους ένθετους βρόχους που αναπτύσσει τη συνάρτηση paste() για να συνδέσει τον δείκτη σειράς, τον δείκτη στήλης και την τιμή του κελιού σε μια ενιαία συμβολοσειρά. Η έκφραση εργαζόμενος [row, col] εδώ λαμβάνει την τιμή στο τρέχον κελί όπου η γραμμή και η στήλη είναι οι υπάρχοντες δείκτες γραμμής και στήλης, αντίστοιχα.

Έτσι, η έξοδος στην κονσόλα ανακτάται με το συνεκτικό ευρετήριο σειράς, ευρετήριο στήλης και τιμή κελιού σε μία μόνο συμβολοσειρά.

Παράδειγμα 4: Εναλλακτική μέθοδος For-Loop στο R

Ο βρόχος for είναι πλέον ξεπερασμένος στη γλώσσα R. Ωστόσο, παρέχει μερικές εναλλακτικές μεθόδους που λειτουργούν το ίδιο με τον βρόχο for και είναι πιο γρήγορες από τους βρόχους for. Η μέθοδος προέρχεται από τις συναρτήσεις 'εφαρμογή οικογένειας' που εκτελούνται για βρόχο στο παρασκήνιο για επανάληψη μέσω DataFrames. Ας εξετάσουμε τον ακόλουθο κώδικα R όπου η συνάρτηση sapply() χρησιμοποιείται για να κάνει βρόχο πάνω από το DataFrame.

dfX <- data.frame(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, άθροισμα)

Εδώ, καθιερώνουμε πρώτα το DataFrame “dfX” καλώντας τη συνάρτηση data.frame() με δύο στήλες, καθεμία από τις οποίες περιέχει αριθμητικές τιμές. Στη συνέχεια εκτυπώνουμε το αρχικό DataFrame “dfX” στην κονσόλα. Στο επόμενο βήμα, χρησιμοποιούμε τη συνάρτηση sapply() για να επαναλάβουμε το παρεχόμενο DataFrame και να πάρουμε το άθροισμα κάθε στήλης. Η συνάρτηση sapply() παίρνει τα ορίσματα 'x' και 'FUN' γενικά. Σε αυτήν την περίπτωση, το X είναι το DataFrame 'dfX' και το 'FUN' είναι η συνάρτηση sum() που εφαρμόζεται σε καθεμία από τις στήλες του DataFrame.

Το αποτέλεσμα της επανάληψης που επιτυγχάνεται μέσω της συνάρτησης sapply() επιτυγχάνεται στην παρακάτω οθόνη. Τα αποτελέσματα της λειτουργίας αθροίσματος του DataFrame εμφανίζονται για κάθε στήλη. Επιπλέον, μπορούμε επίσης να χρησιμοποιήσουμε κάποιες άλλες συναρτήσεις της «οικογένειας εφαρμογής» για τη λειτουργία βρόχου for στο R:

συμπέρασμα

Εργαζόμαστε με βρόχους for για να επαναλάβουμε τις γραμμές ή τις στήλες του DataFrame για να εκτελέσουμε μια συγκεκριμένη λειτουργία. Ο βρόχος for χρησιμοποιείται μεμονωμένα για επανάληψη πάνω από τις στήλες και τις γραμμές. Επιπλέον, το χρησιμοποιούμε για επανάληψη και στις δύο στήλες και σε γραμμές του πλαισίου δεδομένων ταυτόχρονα. Τις περισσότερες φορές, η εφαρμογή συναρτήσεων για να έχετε το επιθυμητό αποτέλεσμα είναι πιο αποτελεσματική. Το παράδειγμα της συνάρτησης εφαρμογής δίνεται στο τελευταίο παράδειγμα πάνω από τη λειτουργία βρόχου for.