Θα ήθελα να προσθέσω στοιχεία σε μια λίστα σε έναν βρόχο (δεν ξέρω ακριβώς πόσα).
Όπως αυτό:
l <- list();
while(...)
l <- new_element(...);
Στο τέλος, το l[1]
θα είναι το πρώτο μου στοιχείο, το l[2]
το δεύτερο και ούτω καθεξής.
Ξέρετε πώς να προχωρήσετε;
Δεν θα πρέπει να προσθέτετε στη λίστα σας χρησιμοποιώντας το c
μέσα στο βρόχο, γιατί αυτό μπορεί να οδηγήσει σε πολύ αργό κώδικα. Βασικά, όταν κάνετε c(l, new_element)
, αντιγράφεται ολόκληρο το περιεχόμενο της λίστας. Αντ' αυτού, πρέπει να προσπελαύνετε τα στοιχεία της λίστας με βάση τον δείκτη. Αν ξέρετε πόσο μεγάλη θα είναι η λίστα σας, είναι καλύτερο να την αρχικοποιήσετε σε αυτό το μέγεθος χρησιμοποιώντας l <- vector("list", N)
. Αν δεν το ξέρετε'μπορείτε να την αρχικοποιήσετε ώστε το μήκος της να είναι ίσο με κάποιο μεγάλο αριθμό (π.χ. αν έχετε ένα ανώτερο όριο στον αριθμό των επαναλήψεων) και στη συνέχεια απλά να διαλέξετε τα μη-NULL στοιχεία μετά το τέλος του βρόχου. Τέλος πάντων, το βασικό σημείο είναι ότι θα πρέπει να έχετε έναν δείκτη για να παρακολουθείτε το στοιχείο της λίστας και να προσθέτετε χρησιμοποιώντας αυτόν π.χ.
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Για περισσότερες πληροφορίες ρίξτε μια ματιά στο Patrick Burns' The R Inferno (Κεφάλαιο 2).