Η R είναι μια γλώσσα με δυναμικούς τύπους, οπότε γενικά δεν χρειάζεται να προσδιορίσεις τον τύπο μιας μεταβλητής. Ο προτιμώμενος τελεστής εκχώρησης είναι ο <-
x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"
Η χρήση του = αντί για το <- συχνά δουλεύει, αλλά όχι πάντα, και αποθαρρύνεται ως κακό στυλ.
Αν δουλεύεις στο RStudio, μπορείς να το εισάγεις με τη συντόμευση πληκτρολογίου Alt-minus.
Οι τελεστές είναι ως επί το πλείστον συμβατικοί, αλλά πρόσεξε τους %/% και %%:
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() μπορεί να χρησιμοποιηθεί οπουδήποτε μέσα στο σώμα της συνάρτησης για να κάνει ρητή την τιμή επιστροφής.
Η κλήση μιας συνάρτησης είναι ίδια όπως σε πολλές άλλες γλώσσες:
squareit(3)
#> [1] 9
Σε αυτή την άσκηση θα γράψεις λίγο κώδικα για να σε βοηθήσεις να μαγειρέψεις υπέροχα λαζάνια από το αγαπημένο σου βιβλίο μαγειρικής.
Έχεις τέσσερις εργασίες, όλες σχετικές με τον χρόνο που χρειάζεται για να μαγειρέψεις τα λαζάνια.
Όρισε τη συνάρτηση expected_minutes_in_oven(), η οποία δεν παίρνει καμία παράμετρο και επιστρέφει πόσα λεπτά πρέπει να μείνουν τα λαζάνια στον φούρνο. Σύμφωνα με το βιβλίο μαγειρικής, ο αναμενόμενος χρόνος ψησίματος σε λεπτά είναι 60.
> expected_minutes_in_oven()
[1] 60
Όρισε τη συνάρτηση remaining_time_in_minutes, η οποία παίρνει ως παράμετρο τα πραγματικά λεπτά που έχουν περάσει τα λαζάνια στον φούρνο και επιστρέφει πόσα λεπτά πρέπει ακόμα να μείνουν τα λαζάνια στον φούρνο, με βάση τον αναμενόμενο χρόνο ψησίματος σε λεπτά από την προηγούμενη εργασία.
> remaining_time_in_minutes(50)
[1] 10
Όρισε τη συνάρτηση prep_time_in_minutes(), η οποία παίρνει ως παράμετρο τον αριθμό των στρώσεων που πρόσθεσες στα λαζάνια και επιστρέφει πόσα λεπτά χρειάστηκες για να προετοιμάσεις τα λαζάνια, υποθέτοντας ότι κάθε στρώση σου παίρνει 2 λεπτά.
> prep_time_in_minutes(2)
[1] 4
Όρισε τη συνάρτηση elapsed_time_in_minutes, η οποία παίρνει δύο ορίσματα: το πρώτο όρισμα είναι ο αριθμός των στρώσεων που πρόσθεσες στα λαζάνια και το δεύτερο όρισμα είναι ο αριθμός των λεπτών που έχουν περάσει τα λαζάνια στον φούρνο. Η συνάρτηση θα πρέπει να επιστρέφει πόσα λεπτά συνολικά έχεις δουλέψει για το μαγείρεμα των λαζάνια, που είναι το άθροισμα του χρόνου προετοιμασίας σε λεπτά και του χρόνου σε λεπτά που έχουν περάσει τα λαζάνια στον φούρνο αυτή τη στιγμή.
> elapsed_time_in_minutes(3, 20)
[1] 26
Γράψου στο Exercism για να μάθεις και να κατακτήσεις R με 21 έννοιες111 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.