Διαδρομές
/
R
R
/
Ύλη
/
Τα βασικά
Τα

Τα βασικά σε R

1 άσκηση

Σχετικά με την έννοια Τα βασικά

Μεταβλητές και ανάθεση

Η R είναι μια γλώσσα δυναμικής τυποποίησης, οπότε γενικά δεν είναι απαραίτητο να προσδιορίσεις τον τύπο μιας μεταβλητής. Ο προεπιλεγμένος τύπος είναι numeric, που συνήθως υλοποιείται ως αριθμός κινητής υποδιαστολής διπλής ακρίβειας. Για να επιβάλεις τη χρήση ακεραίων 32 bit, βάλε επίθημα L (συντομογραφία του Long).

Το να βρεις τον "τύπο" ενός αντικειμένου μπορεί (για ιστορικούς λόγους) να προκαλέσει σύγχυση. Οι συναρτήσεις typeof() και class() είναι παρόμοιες, αλλά μπορεί να επιστρέψουν ελαφρώς διαφορετικά αποτελέσματα:

typeof(50)
#> [1] "double"  # more specific: an implementation detail
typeof(50L)
##> [1] "integer"

class(50)
#> [1] "numeric"  # less specific: ignores implementation details
class(50L)
#> [1] "integer"
Advanced

Μπορεί επίσης να δεις αναφορές στη mode(), που είναι παρόμοια με τη typeof().

Αγνόησε τη mode() και τη storage.mode(). Παρέχονται μόνο για συμβατότητα με παλαιότερο κώδικα.

Ο προτιμώμενος τελεστής ανάθεσης είναι το <-. Αν δουλεύεις στο RStudio, μπορείς να τον εισαγάγεις με τη συντόμευση πληκτρολογίου Alt-minus.

x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"

Το να χρησιμοποιήσεις = αντί για <- συχνά δουλεύει, αλλά όχι πάντα, και αποθαρρύνεται ως κακή πρακτική.

Οι τελεστές είναι ως επί το πλείστον παρόμοιοι με πολλές άλλες γλώσσες, αν και οι %% και %/% είναι πιο ασυνήθιστοι. Αυτή η σύνταξη με % είναι ένας τρόπος να καλείς ενθεματικούς τελεστές που έχουν υλοποιηθεί ως μακροεντολές.

2 + 3   # 5
2 - 3   # -1
2 * 3   # 6
2 / 3   # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3  # 2 (remainder)
2 ^ 3   # 8 (exponential)

Στη R, το # ξεκινά ένα σχόλιο μίας γραμμής. Δεν υπάρχει ξεχωριστή σύνταξη για σχόλια πολλών γραμμών.

Συναρτήσεις

Για να ορίσεις μια συνάρτηση:

squareit <- function(x) {
    x * x
}

Οι συναρτήσεις μπορούν να έχουν μηδέν ή περισσότερα ορίσματα, χωρισμένα με κόμματα. Οι παρενθέσεις () χρειάζονται με τη function(), ακόμα κι αν δεν υπάρχουν παράμετροι.

Μπορείς να ορίσεις προεπιλεγμένες τιμές για τα ορίσματα μιας συνάρτησης, αλλά αυτές πρέπει να έρθουν μετά από κάθε όρισμα χωρίς προεπιλογή, και για την ανάθεση της προεπιλεγμένης τιμής χρησιμοποιείται το = και όχι το <-. Ως ένα μάλλον άσκοπο παράδειγμα:

squareit <- function(x = 42) {
    x * x
}

squareit()
#> [1] 1764

Τα άγκιστρα { } δεν είναι απολύτως απαραίτητα για σώματα συνάρτησης μίας γραμμής, αλλά η χρήση τους θεωρείται καλή πρακτική.

Η R θα επιστρέψει αυτόματα την τελική τιμή μιας συνάρτησης, όπως στα παραδείγματα παραπάνω.

Η return() μπορεί να χρησιμοποιηθεί οπουδήποτε μέσα στο σώμα της συνάρτησης για να κάνει ρητή μια τιμή επιστροφής. Θα επιστρέψει αμέσως την καθορισμένη τιμή και θα τερματίσει τη συνάρτηση χωρίς να εκτελέσει καμία από τις υπόλοιπες εκφράσεις στο σώμα της συνάρτησης.

Μια ρητή κλήση στη return() απαιτείται συνήθως μόνο αν θέλεις να βγεις νωρίς από τη συνάρτηση και να επιστρέψεις μια συγκεκριμένη τιμή για κάποιον λόγο. Ένα παράδειγμα μπορεί να είναι μέσα σε μια ρήτρα if-else.

Κάποιοι προγραμματιστές πάντως προτιμούν τις ρητές επιστροφές ως θέμα στυλ κώδικα.

Η κλήση μιας συνάρτησης είναι ίδια όπως σε πολλές άλλες γλώσσες:

squareit(3)
#> [1] 9

Θα δούμε σε επόμενες Έννοιες ότι το αποτέλεσμα 9 είναι στην πραγματικότητα ένα διάνυσμα μήκους 1 και όχι ένας βαθμωτός αριθμός. Εξ ου και η παρουσία του [1] που δείχνει ότι αυτή είναι η αρχή του διανύσματος.

is.vector(9)
#> [1] TRUE

Τα περισσότερα πράγματα στη R είναι κάποιο είδος διανύσματος!

Note

Η κονσόλα της R θα εμφάνιζε το παραπάνω παράδειγμα ως εξής:

> squareit(3)
[1] 9

Τα έγγραφα σε αυτή τη διδακτέα ύλη ακολουθούν ως επί το πλείστον τη σύμβαση που χρησιμοποιείται σε αρκετά εγχειρίδια της R, αφαιρώντας το prompt και σχολιάζοντας το αποτέλεσμα. Έτσι είναι πιο εύκολο να αντιγράψεις και να επικολλήσεις δείγματα κώδικα στην κονσόλα και να τα τρέξεις.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Τα βασικά