You are on page 1of 53

Εισαγωγή στη Γλώσσα

Προγραμματισμού R
Επιμέλεια:
Μέντωρ Academy
https://mentoracademy.gr
6940690779

Εξατομικευμένη Εκπαίδευση στην


Επιστήμη της Στατιστικής & της
Μηχανικής Μάθησης

Be a Creator Νot a User

ff
Το Μέντωρ Academy δημιουργήθηκε για να επικοινωνήσει την Επιστήμη της
Στατιστικής στον ευρύτερο επιστημονικό χώρο. Η επιστημονική ομάδα του Μέντωρ
Academy απαρτίζεται απο εξειδικευμένους επιστήμονες με πολυετή εμπειρία στην
ακαδημαϊκή έρευνα, στην εξατομικευμένη εκπαίδευση και στην αγορά εργασίας.
Σκοπός του Μεντώρ Academy είναι να υποστηρίζει ερευνητές, στελέχη
επιχειρήσεων, φοιτητές και κάθε επιστήμονα, ανεξαρτήτως εκπαιδευτικού
υποβάθρου, στην κατάκτηση των ακαδημαϊκών και επαγγελματικών στόχων τους
χρησιμοποιώντας τα πιο σύγχρονα εργαλεία της Στατιστικής Επιστήμης.

Copyright © Μέντωρ Academy, 2015 - 2023. Με επιφύλαξη παντός νόμιμου δικαιώματος.


All rights reserved

Το παρόν e-book παρέχεται δωρεάν και αφορά έναν Σύντομο – ενδεικτικό - Οδηγό για την
γλώσσα R. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή των σημειώσεων, εξ
ολοκλήρου ή τμήματος αυτών, για εμπορικούς σκοπούς. Ερωτήματα που αφορούν την χρήση
τους για οποιονδήποτε σκοπό πρέπει να απευθύνονται προς τον συγγραφέα
(https://mentoracademy.gr/contact/).
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Πίνακας περιεχομένων

Εισαγωγή στην R ........................................................................................................................3


Το περιβάλλον του RStudio ......................................................................................................4
Αριθμητικοί Τελεστές ..............................................................................................................5
Τελεστές εκχώρησης..................................................................................................................6
Τελεστές σύγκρισης ...................................................................................................................7
Λογικοί Τελεστές........................................................................................................................8
Μαθηματικές Συναρτήσεις στην R ...........................................................................................9
Τύποι αντικειμένων στην R .....................................................................................................11
Δομές αντικειμένων στην R.....................................................................................................13
Διανύσματα .............................................................................................................................13
Παράγοντες ..............................................................................................................................25
Δισδιάστατοι πίνακες ..............................................................................................................27
Πολυδιάστατοι πίνακες ...........................................................................................................30
Πλαίσια Δεδομένων ................................................................................................................30
Λίστες .......................................................................................................................................32
Συναρτήσεις ............................................................................................................................33
Γενικές Εντολές στην R ............................................................................................................36
Πακέτα στην R..........................................................................................................................37
Αποθήκευση Αντικειμένων .....................................................................................................38
Ανάκτηση Αντικειμένων ..........................................................................................................39
Οι εντολές menu και select.list ...............................................................................................41
Περιγραφική Στατιστική στην R ..............................................................................................43
Περιγραφική Μέτρα Ποσοτικών Δεδομένων ....................................................................43
Περιγραφική Ανάλυση Ποιοτικών Δεδομένων .................................................................45
Κατανομές και Προσομοίωση στην R .....................................................................................46
Βασικά Διαγράμματα στην R........................................................................................................
Διαχείριση δεδομένων με τα πακέτα dplyr & tidyr ....................................................................
Οπτικοποίηση δεδομένων με το πακέτο ggplot2 ........................................................................
Εισαγωγή στο R Markdown .........................................................................................................
Στατιστική ανάλυση και οπτικοποίηση πολυμεταβλητών δεδομένων ......................................
Κατανομές Πιθανοτήτων .............................................................................................................
Διακριτές Κατανομές ...............................................................................................................
Συνεχείς Κατανομές .................................................................................................................

1
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Αρχές Εκτιμητικής Θεωρίας .........................................................................................................


Έλεγχος Στατιστικών Υποθέσεων: Βασικές Παραμετρικές και μη Παραμετρικές Μέθοδοι ........
Ανάλυση Κατηγορικών Δεδομένων .............................................................................................
Μονοπαραγοντική Ανάλυση Διακύμανσης και Συνδιακύμανσης (One -way ANOVA /
ANCOVA) ......................................................................................................................................
Ανάλυση Διακύμανσης για επαναλαμβανόμενες μετρήσεις .....................................................
Διπαραγοντική Ανάλυση Διακύμανσης (Two – way ANOVA) ......................................................
Πολυπαραγοντική Ανάλυση Διακύμανσης και Συνδιακύμανσης (MANOVA/MANCOVA) .........
Ανάλυση συσχέτισης και μερικής συσχέτισης ............................................................................
Ανάλυση Γραμμικής Παλινδρόμησης ..........................................................................................
Ιεραρχική Παλινδρόμηση και επιλογή βέλτιστου μοντέλου ......................................................
Παλινδρόμηση Lasso & Ridge .....................................................................................................
Πολυωνυμική Παλινδρόμηση .....................................................................................................
Παλινδρόμηση Poisson ...............................................................................................................
Ανάλυση Επιβίωσης .....................................................................................................................
Μοντέλο Παλινδρόμησης Cox ..................................................................................................
Λογιστική Παλινδρόμηση ............................................................................................................
Εισαγωγή στην Μηχανική Μάθηση (ML) ....................................................................................
Βαθιά Μηχανική Μάθηση (Deep Learning) ................................................................................
Εφαρμογές στην Βιοστατιστική ...................................................................................................
Βιβλιογραφικές Αναφορές ...........................................................................................................

Το παρών e-book υπάρχει και σε μορφή ηχογραφημένης παρουσίασης σε PP εδώ:


https://mentoracademy.gr/Σεμινάρια/σύγχρονες-μέθοδοι-στατιστικής-ανάλυ/

Οδηγίες για την παρακολούθηση του υλικού υπάρχουν στην σελίδα στο FB:

Μέντωρ Academy: Εξατομικευμένα Σεμινάρια Στατιστικής

2
Εισαγωγή στη Γλώσσα Προγραμματισμού R

1. Εισαγωγή στην R
Η R είναι ένα λογισμικό ανοικτού κώδικα, που χρησιμοποιεί μια γλώσσα
προγραμματισμού επηρεασμένη από την S1, η οποία χρησιμεύει για την υλοποίηση
απλών αλλά και προηγμένων στατιστικών μεθόδων και γραφικών.

Δημιουργήθηκε από τους Ross Ihaka και Robert Gentleman στο πανεπιστήμιο του
Auckland το 1991 στην Νέα Ζηλανδία και το όνομα βασίστηκε στο πρώτο κοινό γράμμα
των ονομάτων των συγγραφέων.

Πέρα από την αδιαμφισβήτητη συνεισφορά πολλών ερευνητών από όλο τον κόσμο,
η γλώσσα R δεν θα είχε τέτοια βελτίωση χωρίς την βοήθεια των 24 επιστημόνων που
απαρτίζουν την ομάδα R Development Core Team, η οποία δημιουργήθηκε το 1997
και είχε ως μέλος και τον John Chambers, βασικό δημιουργό της γλώσσας S.

Η R μπορεί να τρέξει στα λειτουργικά συστήματα Linux, Mac Os και Windows. Ο


χρήστης έχει την δυνατότητα να εφαρμόσει τα διάφορα στατιστικά μοντέλα είτε να
κατεβάσει στον υπολογιστή του (προϋπόθεση να έχει internet) τα πακέτα εκείνα τα
οποία τον εξυπηρετούν από το CRAN2. Για τα πακέτα θα μιλήσουμε ειδικότερα
παρακάτω.

Μπορεί να αποκτηθεί δωρεάν από την ιστοσελίδα https://www.r-project.org,


πατώντας στην συνέχεια download R και επιλέγοντας mirror (κάποια τοποθεσία
γεωγραφικά κοντά στον χρήστη) ή κατευθείαν από την ιστοσελίδα
https://cran.cc.uoc.gr//mirrors/CRAN/ ( Greece, University of Crete ) και ακολουθώντας
τα βήματα μέχρι την εγκατάσταση.

1
Η γλώσσα S είναι μια στατιστική γλώσσα προγραμματισμού η οποία δημιουργήθηκε από τον John
Chambers και τους συνεργάτες του στα εργαστήρια AT&T Bell το 1976
2 Το CRAN (Comprehensive R Archive Network) όπως λένε και τα αρχικά του αποτελεί μια συλλογή από

ιστότοπους από όλον τον κόσμο οι οποίοι απαρτίζονται από πηγαίο κώδικά, εγχειρίδια και έγγραφα της
R καθώς και μια μεγάλη αποθήκη πακέτων που συνεχώς ανανεώνεται. Κάθε ιστότοπος ονομάζεται
πρότυπο (mirror) ενώ υπάρχουν δεκάδες πρότυπα (στην
3 Ελλάδα, από το Πανεπιστήμιο Κρήτης).
Εισαγωγή στη Γλώσσα Προγραμματισμού R

2. Το περιβάλλον του RStudio


Το περιβάλλον της R δεν είναι οικείο για τους αρχάριους χρήστες, και πιθανόν να
μην είναι εύχρηστο και λειτουργικό για τους έμπειρους. Για αυτό τον λόγο υπάρχουν
αρκετά γραφικά περιβάλλοντα χρήστη ( Graphical User Interface, GUI ), διαθέσιμα για
την R τα οποία προσφέρουν μια πιο ομαλή αλληλεπίδραση του χρήστη με το γραφικό
περιβάλλον της R. Ένα από αυτά είναι το RStudio.

Να διευκρινίσουμε ότι για να κατεβάσει κάποιος χρήστης το RStudio στον


υπολογιστή του πρέπει πρώτα να έχει εγκαταστήσει την R, όπως περιγράψαμε στην
προηγούμενη ενότητα. Το RStudio μπορεί να αποκτηθεί δωρεάν από την ιστοσελίδα
https://www.rstudio.com/products/rstudio/download/, ακολουθώντας τα βήματα μέχρι
την εγκατάσταση.

Το κεντρικό πάνελ της RStudio διαιρείται σε 4 επιμέρους παράθυρα όπως φαίνεται


παρακάτω στην εικόνα.

Εδώ ο χρήστης μπορεί να γράφει τον Επιλέγοντας το πλήκτρο Environment μπορεί


κώδικα καθώς και τις όποιες ο χρήστης να βλέπει όλα τα ενεργά αντικείμενα,
παρατηρήσεις. Με την επιλογή Run συναρτήσεις και οτιδήποτε άλλο έχει
δημιουργήσει την τρέχουσα περίοδο.
μπορεί να τρέχει το κομμάτι του
Επιλέγοντας το πλήκτρο History μπορεί να δει
κωδικού που επιθυμεί. Επίσης στο όλες τις χρησιμοποιούμενες εντολές μέχρι
παράθυρο αυτό εμφανίζεται (εάν το εκείνη την χρονική στιγμή.
επιλέξουμε) τα δεδομένα μας (data),
απλά πληκτρολογώντας στην
κονσόλα View(data).Σημαντικό είναι
ότι μπορούμε να διαχειριζόμαστε
ταυτόχρονα πολλά αρχεία και data.

Επιλέγοντας το πλήκτρο File ο


χρήστης βλέπει όλα τα αρχεία και
φακέλους που έχει στον χώρο
Στην κονσόλα μπορεί ο χρήστης να γράφει εργασίας του. Επιλέγοντας το
πλήκτρο Plots μπορεί να δει όλα τα
τις εντολές μετά το σύμβολο “>” και αφού
γραφήματα της τρέχουσας
πληκτρολογήσει Enter στην επόμενη περιόδου. Επιλέγοντας το πλήκτρο
γραμμή βλέπει τα αποτελέσματα. Αν το Packages βλέπει όλα τα πακέτα που
αποτέλεσμα είναι κάποιο διάγραμμα, αυτό διαθέτει. Επιλέγοντας το πλήκτρο
εμφανίζεται στο δεξί παράθυρο από την Help μπορεί να αναζητήσει βοήθεια
κονσόλα. για οποιαδήποτε εντολή.

4
Εισαγωγή στη Γλώσσα Προγραμματισμού R

3. Αριθμητικοί τελεστές
Η R μπορεί να χρησιμοποιηθεί και ως αριθμομηχανή για την εκτέλεση απλών πράξεων
όπως φαίνεται στον παρακάτω πίνακα:

Πίνακας 3.1: Αριθμητικοί Τελεστές στην R

Τελεστής Περιγραφή Εφαρμογή

+ Πρόσθεση > 5 + 10
[1] 15

- Αφαίρεση > 5 – 10
[1] -5

* Πολλαπλασιασμός > 2*5


[1] 10

/ Διαίρεση > 10/3


[1] 3.333333

^ ή ** Ύψωση σε δύναμη > 2^3


[1] 8
>2**3
[1] 8

%% Υπόλοιπο Διαίρεσης > 10%%3


[1] 1

%/% Πηλίκο Ακέραιας Διαίρεσης > 10%/%3


[1] 3

Παρατήρηση 3.1

1. Στην κονσόλα μετά την ένδειξη « > » όπου αναβοσβήνει ο κέρσορας


πληκτρολογούμε την εντολή που θέλουμε να δώσουμε και πατάμε ENTER
2. Η ένδειξη [1] δηλώνει το πλήθος των αποτελεσμάτων μέχρι το πρώτο
αποτέλεσμα που διαβάζει. Η πρώτη γραμμή αποτελεσμάτων θα έχει πάντα [1]
για τον λόγο αυτό, ενώ σε κάθε επόμενη γραμμή (εάν υπάρχει), μέσα στην
αγκύλη θα απαριθμείται η θέση του πρώτου αποτελέσματος που διαβάζει στην
γραμμή αυτή.
3. Το σύμβολο « + » υποδηλώνει ότι η εντολή δεν έχει ολοκληρωθεί ακόμη από
τον χρήστη και το πρόγραμμα αναμένει τη συνέχεια.

5
Εισαγωγή στη Γλώσσα Προγραμματισμού R

4. Τελεστές Εκχώρησης
Για να καταχωρήσουμε ένα αποτέλεσμα σε ένα αντικείμενο χρησιμοποιούμε τους
τελεστές εκχώρησης. Θα μιλήσουμε σε επόμενη ενότητα διεξοδικά για την έννοια του
αντικειμένου.

Πίνακας 4.1: Τελεστές εκχώρησης στην R

Τελεστής Περιγραφή Εφαρμογή

<- ή <<- ή = Αριστερόστροφη εκχώρηση > x <- 5


αποτελέσματος >x
[1] 5

-> ή ->> Δεξιόστροφη Εκχώρηση > x -> y


Αποτελέσματος >y
[1] 5

Παρατήρηση 4.1

1. Η R είναι ευαίσθητη στα κεφαλαία γράμματα ( case sensitive ), δηλαδή δεν είναι
το ίδιο να γράψουμε x και Χ.
2. Οι παραπάνω τελεστές είναι ισοδύναμοι με πολύ μικρές διαφορές που δεν θα
απασχολήσουν τον μέσο χρήστη, αρκεί να χρησιμοποιεί πρόσφατη έκδοση
της R. Παρόλα αυτά προτιμάμε να χρησιμοποιούμε τον τελεστή « <- » για
αριστερή εκχώρηση και τον τελεστή « -> » για δεξιά εκχώρηση του
αποτελέσματος.
3. Ένα αντικείμενο μπορούμε να το εμφανίσουμε και στα 2 μέρη ενός τελεστή
εκχώρησης, αρκεί να το έχουμε ορίσει πριν. Ας δούμε το επόμενο παράδειγμα:
> x <- 5
> x <- x + 5
>x
[1] 5

4. Στην R γράφουμε συνήθως μια εντολή ανά γραμμή. Βέβαια υπάρχει και η
επιλογή με το ερωτηματικό ; ανάμεσα σε κάθε εντολή να τοποθετήσουμε
παραπάνω από μία στην ίδια γραμμή.

6
Εισαγωγή στη Γλώσσα Προγραμματισμού R

5. Τελεστές Σύγκρισης
Πολλές φορές θέλουμε να εξετάσουμε εάν κάποιες εκφράσεις είναι αληθείς (TRUE) ή
ψευδής (FALSE). Αυτό γίνεται χάρη στους τελεστές σύγκρισής όπως φαίνεται στον
παρακάτω πίνακα:

Πίνακας 5.1: Τελεστές σύγκρισης στην R

Τελεστής Περιγραφή Εφαρμογή

< Μικρότερο >5<5


[1] FALSE

<= Μικρότερο Ίσο > 5 >= 5


[1] TRUE

> Μεγαλύτερο > 5 >10


[1] FALSE

>= Μεγαλύτερο Ίσο > 2*5 >= 2^3+2


[1] TRUE

== Ακριβώς Ίσο με > 2^3+2 == 10


[1] TRUE

!= Όχι ίσο με > 2^3+2 != 10


[1] FALSE

Παρατήρηση 5.1

Στην R το TRUE έχει την τιμή 1 και το FALSE την τιμή 0. Αυτό μπορεί να δειχθεί και
με ένα απλό παράδειγμα:

> TRUE +4

[1] 5

> FALSE + 4

[1] 4

Αυτή η ιδιότητα έχει κάποιες πρακτικές εφαρμογές κυρίως στο κομμάτι του
προγραμματισμού.

7
Εισαγωγή στη Γλώσσα Προγραμματισμού R

6. Λογικοί τελεστές
Οι λογικοί τελεστές εφαρμόζονται πάνω σε λογικές εκφράσεις (ως αποτέλεσμα έχουν
TRUE ή FALSE) και επιστρέφουν λογικού τύπου δεδομένα (TRUE ή FALSE).

Πίνακας 6.1: Λογικοί τελεστές στην R

Τελεστής Περιγραφή Εφαρμογή

! ΌΧΙ > !(5>10)


[1] TRUE

& KAI > (5 > 10)&(5 > 2)


[1] FALSE

| Ή > (5 > 10)|(5 > 2)


[1] TRUE

Η σειρά προτεραιότητας των πράξεων μέσα σε μια έκφραση είναι: παρενθέσεις –


ύψωση σε δύναμη – Ακέραια Διαίρεση/Υπόλοιπο - Διαίρεση/Πολλαπλασιασμός –
Πρόσθεση/Αφαίρεση - Τελεστές Συγκρίσεις – Λογικοί Τελεστές

Ο παρακάτω πίνακας μας δίνει διάφορους συνδυασμούς λογικών τελεστών με


τελεστές σύγκρισης:

Α Β Α&Β Α|Β !(Α&Β) !Α !Β !Α&!Β !(Α|Β) (!Α)|(!Β)

F F F F T T T T T T

F T F T T T F F F T

T F F T T F T F F T

T T T T F F F F F F

8
Εισαγωγή στη Γλώσσα Προγραμματισμού R

7. Μαθηματικές Συναρτήσεις στην R


Στον επόμενο πίνακα συνοψίζουμε όλες τις βασικές μαθηματικές συναρτήσεις στην R:

Πίνακας 7.1: Βασικές μαθηματικές συναρτήσεις στην R

Συνάρτηση Περιγραφή Εφαρμογή

abs(x) Επιστρέφει την απόλυτη τιμή του x > abs(-10)


[1] 10

exp(x) Επιστρέφει την εκθετική > exp(10)


συνάρτηση υπολογισμένη στο x [1] 22026.47

factorial(x) Επιστρέφει το παραγοντικό του > factorial(5)


αριθμού x [1] 120

log(x) Επιστρέφει τον λογάριθμο του x με > log(10)


βάση e = 2.7182 [1] 2.302585

log2(x) Επιστρέφει τον λογάριθμο του x με > log2(10)


βάση το 2 [1] 3.321928

log10(x) Επιστρέφει τον λογάριθμο του x με > log10(10)


βάση το 10 [1] 1

gamma Συνάρτηση Γάμμα 


() =  x a −1e − x dx
0

beta Συνάρτηση Βήτα 1


B(a, b) =  x a −1 (1 − x) b −1 dx
0

pi Επιστρέφει την τιμή του αριθμού π > pi


[1] 3.141593

sqrt(x) Επιστρέφει την τετραγωνική ρίζα > sqrt(10)


του αριθμού x [1] 3.162278

ceiling(x) Στρογγυλοποιεί τον αριθμό x προς > ceiling(9.7)


τα πάνω [1] 10

floor(x) Στρογγυλοποιεί τον αριθμό x προς > floor(9.7)


trunc(x) τα κάτω [1] 9
> trunc(9.7)
[1] 9

9
Εισαγωγή στη Γλώσσα Προγραμματισμού R

round(x,digits) Στρογγυλοποιεί τον αριθμό x μέχρι > round(9.56789, 2)


digits δεκαδικά ψηφία [1] 9.57

sin(x) Επιστρέφει το ημίτονο του > sin(10)


αριθμού x [1] -0.5440211

cos(x) Επιστρέφει το συνημίτονο του > cos(10)


αριθμού x [1] -0.8390715

tan(x) Επιστρέφει την εφαπτομένη του > tan(10)


αριθμού x [1] 0.6483608

asin(x) Επιστρέφει το τόξο ημιτόνου του > asin(1)


αριθμού x [1] 1.570796

acos(x) Επιστρέφει το τόξο συνημίτονου > acos(1)


του αριθμού x [1] 0

atan(x) Επιστρέφει το τόξο εφαπτομένης > atan(1)


του αριθμού x [1] 0.7853982

Παρατήρηση 7.1.1

1. Σε περίπτωση που το αποτέλεσμα είναι άπειρο επιστρέφει inf ( ∞ ) ή – inf (-


∞), ενώ σε περιπτώσεις απροσδιοριστίας επιστρέφει NaN (Not a Number). Οι
εντολές is.finite(x) και is.infinite ελέγχουν αν οι τιμές απειρίζονται. Αντίστοιχα
με την εντολή is.nan(x) ελέγχουμε αν οι τιμές είναι αριθμοί.
2. Όταν το αποτέλεσμα ακολουθείται, για παράδειγμα, από το e+100 αυτό
σημαίνει ότι πολλαπλασιάζεται με το 10100 . Ενώ όταν, για παράδειγμα,
ακολουθείται από το e-100 αυτό διαιρείται με το 10100.

10
Εισαγωγή στη Γλώσσα Προγραμματισμού R

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

➢ Πραγματικός αριθμός ( numeric )

> x <- 10 # εκχωρούμε έναν ακέραιο αριθμό


>x # τυπώνουμε την τιμή του x
[1] 10
> is.numeric(x) # ελέγχουμε αν είναι πραγματικός αριθμός
[1] TRUE
> is.integer(x) # ελέγχουμε αν είναι ακέραιος αριθμός
[1] FALSE

Παρατηρούμε ότι παρόλο που ο αριθμός είναι ακέραιος σώζεται ως


πραγματικός. Για να πούμε στην R να τον λάβει ως ακέραιο χρησιμοποιούμε
την συνάρτηση as.integer
> as.integer(x)
> is.integer(x)
[1] TRUE

➢ Μιγαδικός αριθμός ( complex )

> x <- complex(real=5, imaginary=10) # Δημιουργούμε έναν μιγαδικό αριθμό


>x
[1] 5+10i
> Re(x) # Πραγματικό μέρος (Real part)
[1] 5
> Im(x) # Φανταστικό μέρος (Imaginary part)
[1] 10

11
Εισαγωγή στη Γλώσσα Προγραμματισμού R

➢ Λογικές τιμές ( Logical )

> x <- 10
> y <- 5
> z <- x > y # Είναι το x μεγαλύτερο από το y?
[1] TRUE
> z <- x < y # Είναι το x μικρότερο από το y?
[1] FALSE
> is.logical(x) # Ελέγχουμε αν το αντικείμενο x είναι λογικό
[1] TRUE

➢ Χαρακτήρες ( Character )

> x <- "Χαρακτήρας"


>x
[1] "Χαρακτήρας"
> is.character(x) # Ελέγχουμε αν το αντικείμενο x είναι χαρακτήρας
[1] TRUE

Παρατήρηση 8.1

1. Στην κονσόλα, μετά τον χαρακτήρα # οτιδήποτε γράψουμε αγνοείται, δηλαδή


μπορούμε να σημειώνουμε σχόλια και παρατηρήσεις.
2. Το σύμβολο NULL δηλώνει το κενό αντικείμενο. Δηλαδή εάν γράψουμε x <-
NULL θα έχουμε δημιουργήσει το αντικείμενο x το οποίο είναι κενό.
3. Με την εντολή is.null(x) ελέγχουμε εάν αν ένα αντικείμενο είναι κενό
4. Εάν θέλουμε να δούμε τον τύπο ενός αντικειμένου x πληκτρολογούμε είτε την
εντολή class(x) είτε την εντολή mode(x). Ο τύπος (mode) των δεδομένων
χαρακτηρίζει τα στοιχεία ενός αντικειμένου, ενώ η κλάση (class) το ίδιο το
αντικείμενο συνολικά. Επίσης η εντολή typeof είναι παρόμοια με την εντολή
mode απλά πιο ακριβής (διαχωρίζει τις numeric σε integer και double).
5. Για να εμφανίσουμε το αποτέλεσμα εκτός από το να πληκτρολογήσουμε το
όνομα του αντικειμένου μπορούμε να χρησιμοποιήσουμε την εντολή print(). H
διαφορά είναι κάποιες επιπλέον επιλογές της συγκεκριμένης συνάρτησης.

12
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9. Δομές Αντικειμένων
Τα αντικείμενα ανάλογα με την δομή τους χωρίζονται σε διανύσματα, παράγοντες,
δισδιάστατους πίνακες, πολυδιάστατους πίνακες, πίνακες δεδομένων, λίστες και
συναρτήσεις.

9.1 Διανύσματα
Είναι ένα διάνυσμα ( vector ) είτε ένας μονοδιάστατος πίνακας που περιέχει αντικείμενα
του ίδιου τύπου. Μπορεί να αποτελείται από αριθμητικές, λογικές ή αλφαριθμητικές
τιμές (χαρακτήρες).

Αριθμητικά Διανύσματα

Οι αριθμητικοί τελεστές που περιγράψαμε παραπάνω μπορούν να χρησιμοποιηθούν


στα αριθμητικά διανύσματα, κάνοντας τις πράξεις στοιχείο με στοιχείο.

c( )

Δημιουργία ενός διανύσματος με την εντολή > x <- c(1,2,3,4,5)


combine >x
[1] 1 2 3 4 5

α:β

Δημιουργία μιας ακολουθίας αριθμών από το α > x <- 1:5


ως το β με βήμα τη μονάδα >x
[1] 1 2 3 4 5

c(α:β)

Συνδυασμός των παραπάνω 2 εντολών > x <- c(1:5)


>x
[1] 1 2 3 4 5

length(x)

Επιστρέφει το μήκος του διανύσματος > x <- c(1:10)


> length(x)
[1] 10

13
Εισαγωγή στη Γλώσσα Προγραμματισμού R

numeric(length) ή double(length)

Δημιουργεί ένα διάνυσμα μηδενικών κελιών και > numeric(5)


παίρνει ως όρισμα το μήκος του διανύσματος [1] 0 0 0 0 0
(length). > double(5)
[1] 0 0 0 0 0

as.numeric(x)

Μετατρέπει ένα διάνυσμα σε αριθμητικό > x <- c("1","2","3","4","5")


διάνυσμα. >x
[1] "1" "2" "3" "4" "5"
> as.numeric(x)
[1] 1 2 3 4 5

is.numeric(x)

Ελέγχει εάν το διάνυσμα x είναι αριθμητικό. > x <- c(1:10)


Επιστρέφει TRUE εάν είναι αριθμητικό και > is.numeric(x)
FALSE εάν δεν είναι. [1] TRUE

seq(from= , to= , by= , length= , along= )

Δημιουργεί μια ακολουθία αριθμών με βήμα > seq(from=1, to=9, by=2)


διαφορετικό της μονάδας. Ως ορίσματα [1] 1 3 5 7 9
μπορούμε να δώσουμε το πρώτο όρο της > seq(from=1, to=9, length=5)
ακολουθίας (from), τον τελευταίο όρο της [1] 1 3 5 7 9
ακολουθίας (to), το βήμα της ακολουθίας (by), > y <- 1:10
το μήκος της ακολουθίας (length), και το όνομα > seq(from=1, to=9, along=y)
ενός άλλους διανύσματος ώστε η ακολουθία να [1] 1 2 3 4 5 6 7 8 9
έχει το ίδιο μήκος με αυτό το διάνυσμα (along). > seq(from=1, to=10, by=2)
[1] 1 3 5 7 9

sequence(nvec)

Παίρνει ως όρισμα ένα διάνυσμα ακέραιων > sequence(c(2,4))


αριθμών (non-negative integer vector) όπου [1] 1 2 1 2 3 4
κάθε στοιχείο καθορίζει το δεξί άκρο της > sequence(c(2,4,5))
ακολουθίας. [1] 1 2 1 2 3 4 1 2 3 4 5

14
Εισαγωγή στη Γλώσσα Προγραμματισμού R

rep(x, times=, each= )

Επαναλαμβάνει μια τιμή ή ένα διάνυσμα x times > x <- c(1:5)


φορές ή κάθε τιμή του διανύσματος each φορές > rep(x,times=2)
[1] 1 2 3 4 5 1 2 3 4 5
> rep(x,each=2)
[1] 1 1 2 2 3 3 4 4 5 5

x[pos]

> x <- c(1, 3, 5, 10, 20)


Με την αγκύλη καλούμε συγκεκριμένα στοιχεία
> x[2]
ενός διανύσματος. Μπορούμε να
[1] 3
τοποθετήσουμε την εντολή του διανύσματος για
> x[c(2,3)]
την επιστροφή παραπάνω από 1 τιμές
[1] 3 5
(x[c(2,3)]) ή την εντολή της δημιουργίας
> x <- c(1, 3, 5, 10, 20)
ακολουθίας τιμών για να καλέσουμε όλα τα
> x[2:4]
στοιχεία από την θέση α έως την θέση β
[1] 3 5 10
(x[α:β]).

x[-pos]

Με το μείον μέσα στην αγκύλη επιστρέφουμε το > x <- c(1, 3, 5, 10, 20)
διάνυσμα x εκτός από την τιμή που βρίσκεται > x[-2]
στην θέση pos [1] 1 5 10 20

sign(x)

Επιστρέφει το πρόσημο των τιμών του > x <- c(1, -2, -3, 5, 10)
διανύσματος x > sign(x)
[1] 1 -1 -1 1 1

rev(x)

Επιστρέφει τις τιμές του διανύσματος σε > x <- c(1, -2, -3, 5, 10)
αντίστροφη σειρά > rev(x)
[1] 10 5 -3 -2 1

15
Εισαγωγή στη Γλώσσα Προγραμματισμού R

sort(x, decreasing = , na.last = )

Διατάσσει τα στοιχεία του διανύσματος x είτε > x <- c(10,15,5,20,1, NA)


κατά αύξουσα σειρά (decreasing = FALSE) είτε > sort(x)
κατά φθίνουσα σειρά (decreasing = TRUE), [1] 1 5 10 15 20
όπου είναι και η εξ ορισμού επιλογή (εάν δεν > sort(x, decreasing= TRUE)
χρησιμοποιήσουμε το εν λόγω όρισμα). Επίσης [1] 20 15 10 5 1
έχουμε την επιλογή, εάν υπάρχουν ελλείπουσες > sort(x, na.last = TRUE)
τιμές, αυτές να μπουν είτε στην αρχή [1] 1 5 10 15 20 NA
(na.last=FALSE ) είτε στο τέλος (na.last=TRUE) > sort(x, na.last = FALSE)
είτε να απομακρυνθούν (na.last=NA), όπου [1] NA 1 5 10 15 20
είναι και η εξ ορισμού επιλογή (εάν δεν > is.na(x)
χρησιμοποιήσουμε το εν λόγω όρισμα). [1] FALSE FALSE FALSE FALSE
[5] FALSE TRUE
Να διευκρινίσουμε, ότι οι ελλείπουσες τιμές στην R
μπαίνουν με το σύμβολο NA ( Not Available ) ενώ
ελέγχουμε τις θέσεις που έχουμε ελλείπουσα τιμή με
την εντολή is.na(x). Η τελευταία εντολή επιστρέφει
FALSE στις θέσεις που δεν υπάρχουν ελλείπουσες
τιμές ενώ TRUE στις θέσεις που υπάρχουν.

order(x, decreasing = , na.last = )

Επιστρέφει την θέση των ταξινομημένων κατά > x <- c(1:5)


φθίνουσα σειρά (decreasing = TRUE), ή > order(x)
αύξουσα σειρά (decreasing = FALSE) όπου [1] 1 2 3 4 5
είναι και η εξ ορισμού επιλογή (εάν δεν > order(x, decreasing = TRUE)
χρησιμοποιήσουμε το εν λόγω όρισμα) [1] 5 4 3 2 1
μεγέθους τιμών του διανύσματος x. Επίσης > x <- c(4,1,5,8,0)
έχουμε την επιλογή, εάν υπάρχουν ελλείπουσες > order(x)
τιμές, αυτές να μπουν είτε αρχή [1] 5 2 1 3 4
στην
(na.last=FALSE) είτε στο τέλος (na.last=TRUE) > order(x, decreasing = TRUE)
είτε να απομακρυνθούν (na.last=NA), όπου [1] 4 3 1 2 5
είναι και η εξ ορισμού επιλογή (εάν δεν x <- c(10,15,5,20,1, NA)
χρησιμοποιήσουμε το εν λόγω όρισμα). > order(x, na.last = TRUE)
[1] 5 3 1 2 4 6
> order(x, na.last = FALSE)
[1] 6 5 3 1 2 4

16
Εισαγωγή στη Γλώσσα Προγραμματισμού R

rank(x, na.last = , ties.method = )

Επιστρέφει την σειρά κατάταξης των τιμών ενός > x <- c(5,10,2,5,15)
διανύσματος x. Εάν στο διάνυσμα > rank(x)
επαναλαμβάνονται κάποιες τιμές δηλαδή [1] 2 4 1 5 3
έχουμε ισοπαλίες (ties) στην σειρά κατάταξης > x <- c(5,10,2,5,9)
τότε χρησιμοποιούμε το όρισμα ties.method στο > rank(x)
οποίο ορίζουμε πως θα τις χειριστεί. Έχουμε [1] 2.5 5.0 1.0 2.5 4.0
την δυνατότητα οι τιμές που επαναλαμβάνονται, > rank(x, ties.method = "first")
στην σειρά κατάταξης να προκύψουν είτε από [1] 2 5 1 3 4
τον μέσο όρο των σειρών κατάταξης τους > rank(x, ties.method = "random")
(ties.method = average) όπου είναι και η εξ [1] 3 5 1 2 4
ορισμού επιλογή (εάν δεν χρησιμοποιήσουμε το > rank(x, ties.method = "max")
εν λόγω όρισμα), είτε η πρώτη τιμή στην σειρά [1] 3 5 1 3 4
εμφάνισης να πάρει την χαμηλότερη τιμή > rank(x, ties.method = "min")
(ties.method = first ), είτε τυχαία (ties.method = [1] 2 5 1 2 4
random ), είτε επιστρέφοντας την μεγαλύτερη > x <- c(10,15,5,20,1, NA)
σειρά κατάταξης σε όλες τις παρατηρήσεις με > rank(x)
τις ίδιες τιμές (ties.method = max), είτε [1] 3 4 2 5 1 6
> rank(x, na.last=TRUE)
επιστρέφοντας την μικρότερη σειρά κατάταξης
[1] 3 4 2 5 1 6
σε όλες τις παρατηρήσεις με τις ίδιες τιμές
> rank(x, na.last=FALSE)
(ties.method = min). Επίσης έχουμε την
[1] 4 5 3 6 2 1
επιλογή, εάν υπάρχουν ελλείπουσες τιμές,
αυτές να μπουν είτε στην αρχή (na.last=FALSE)
είτε στο τέλος (na.last=TRUE) είτε να
απομακρυνθούν (na.last=NA), όπου είναι και η
εξ ορισμού επιλογή

which.max(x)

Επιστρέφει την θέση της μεγαλύτερης τιμής του > x <- c(5,10,15,1,20)
διανύσματος x > which.max(x)
[1] 5

which.min(x)

Επιστρέφει την θέση της μικρότερης τιμής του > x <- c(5,10,15,1,20)
διανύσματος x > which.min(x)
[1] 4

17
Εισαγωγή στη Γλώσσα Προγραμματισμού R

which(condition)

Επιστρέφει την θέση των τιμών εκείνων που > x <- c(5,10,15,1,20)
ικανοποιούν την συνθήκη condition > which(x>10)
[1] 3 5

[condition]

Μια αρκετά χρήσιμη ιδιότητα της αγκύλης όταν > x <- c(3,1,-4,10,-9)
τοποθετείται μετά την εντολή είναι όταν > rank(x)
επιθυμούμε να την εφαρμόσουμε μόνο για τις [1] 4 3 2 5 1
τιμές εκείνες που ικανοποιούν μια συγκεκριμένη > rank(x)[x>0]
συνθήκη. Υπό την λογική αυτή υπάρχει [1] 4 3 5
πληθώρα εφαρμογών σε προγραμματιστικά
προβλήματα.

names(x)

Με την εντολή αυτή > grade <- c(8, 9, 7, 9,10)


δίνουμε ονόματα στις > grade
τιμές του αριθμητικού [1] 8 9 7 9 10
διανύσματος Αυτό > names(grade) <- c("Γιώργος", "Μαρία", "Αντώνης",
x.
"Παναγιώτης", "Ελένη")
βέβαια μπορεί να γίνει και
> names(grade)
εξ αρχής, δηλαδή από
[1] "Γιώργος" "Μαρία" "Αντώνης" "Παναγιώτης"
την κατασκευή του.
[5] "Ελένη"
> grade
Γιώργος Μαρία Αντώνης Παναγιώτης Ελένη
8 9 7 9 10
> grade <- c("Γιώργος"=8, "Μαρία"=9, "Αντώνης"=7,
"Παναγιώτης"=9, "Ελένη"=10)

match(x, y, nomatch = )

Επιστρέφει την θέση στο διάνυσμα y των κοινών > x <- 1:5 ; y <- 3:7
στοιχείων με την σειρά εμφάνισης στο διάνυσμα > match(x,y)
x. Στο όρισμα nomatch ορίζουμε το σύμβολο που [1] NA NA 1 2 3
θέλουμε να επιστρέφει όταν δεν εντοπίζει κοινό > match(y,x)
στοιχείο. Εξ ορισμού, δηλαδή εάν δεν βάλουμε το [1] 3 4 5 NA NA
όρισμα, θα επιστρέφει το NA ( Not Available ) > match(x,y,nomatch = 0)
στην αντίστοιχη θέση. [1] 0 0 1 2 3

18
Εισαγωγή στη Γλώσσα Προγραμματισμού R

x%in%y

Κάνει ακριβώς την ίδια λειτουργία με την εντολή > x <- 1:4
match με την διαφορά ότι το αποτέλεσμα που > y <- 3:6
επιστρέφει δεν είναι η θέση των κοινών στοιχείων > x%in%y
αλλά ένα λογικό διάνυσμα, TRUE και FALSE [1] FALSE FALSE TRUE TRUE
αντίστοιχα. > is.element(x,y)
[1] FALSE FALSE TRUE TRUE
Ισοδύναμη είναι και η εντολή is.element(x,y)

intersect(x,y)

Επιστρέφει την τομή των διανυσμάτων x και y > x <- 1:5


> y <- 3:7
> intersect(x,y)
[1] 3 4 5

union(x,y)

Επιστρέφει την ένωση των διανυσμάτων x και y > x <- 1:5


> y <- 3:7
> union(x,y)
[1] 1 2 3 4 5 6 7

setdiff(x,y)

Επιστρέφει τα στοιχεία του διανύσματος x που > x <- 1:5


δεν υπάρχουν στο διάνυσμα y. > y <- 3:7
> setdiff(x,y)
[1] 1 2
> setdiff(y,x)
[1] 6 7

setequal(vector1, vector2)

Επιστρέφει TRUE εάν τα στοιχεία του > x <- 1:5


διανύσματος vector1 είναι κοινά με τα > y <- 3:7
στοιχεία του διανύσματος vector2. Σε > setequal(x,y)
αντίθετη περίπτωση επιστρέφει FALSE. [1] FALSE
> z <- 1:5
> setequal(x,z)
[1] TRUE

19
Εισαγωγή στη Γλώσσα Προγραμματισμού R

> setequal(union(x, y), c(setdiff(x, y),


Συνδυαστική εφαρμογή των 4
intersect(x, y), setdiff(y,x)))
παραπάνω εντολών για την καλύτερη
[1] TRUE
κατανόηση τους.

unique(x)

Επιστρέφει το διάνυσμα x χωρίς τα > x<- c(1:5,2,4,6,8,10)


στοιχεία που επαναλαμβάνονται > x
(διπλοεγγραφές). Παρόμοια είναι και η [1] 1 2 3 4 5 2 4 6 8 10
εντολή x[!duplicated(x)] > unique(x)
[1] 1 2 3 4 5 6 8 10
> x[!duplicated(x)]
[1] 1 2 3 4 5 6 8 10

duplicated(x)

Επιστρέφει ένα λογικό διάνυσμα > x<- c(1:5,2,4,6,8,10)


τοποθετώντας TRUE στις > x
διπλοεγγραφές. [1] 1 2 3 4 5 2 4 6 8 10
>duplicated(x)
[1] FALSE FALSE FALSE FALSE
[5]FALSE TRUE TRUE FALSE FALSE
[10] FALSE

which.duplicated(x)

Επιστρέφει τις θέσεις όπου υπάρχουν > x<- c(1:5,2,4,6,8,10)


διπλοεγγραφές. >x
[1] 1 2 3 4 5 2 4 6 8 10
> which(duplicated(x))
[1] 6 7

20
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Διανύσματα Χαρακτήρων

c()

Παρόμοια με τα αριθμητικά διανύσματα > x <- c("Statistics", "Biostatistics")


κατασκευάζονται και τα διανύσματα > x
χαρακτήρων. [1] "Statistics" "Biostatistics"

character(length)

Επιστρέφει ένα κενό διάνυσμα > character(5)


χαρακτήρων μήκους length. [1] "" "" "" "" ""

as.character(x)

Μετατρέπει ένα διάνυσμα x σε διάνυσμα > x <- 1:5


χαρακτήρων. >x
[1] 1 2 3 4 5
> as.character(x)
[1] "1" "2" "3" "4" "5"

format(x,digits)

Μετατρέπει το διάνυσμα x σε διάνυσμα > x <- c(1.23,1.34,1.45,1.56)


χαρακτήρων ενώ με το όρισμα digits > format(x,digits=2)
επιλέγουμε πόσα δεκαδικά επιθυμούμε [1] "1.2" "1.3" "1.4" "1.6"
(εάν οι αριθμοί δεν είναι ακέραιοι).

noquote(x)

Επιστρέφει την ακολουθία χαρακτήρων > x <- c("Statistics", "Biostatistics")


χωρίς τα εισαγωγικά. > noquote(x)
[1] Statistics Biostatistics

nchar(x)

Δέχεται ένα διάνυσμα χαρακτήρων και x <- c("Statistics", "Biostatistics")


επιστρέφει ένα διάνυσμα όπου τα > nchar(x)
στοιχεία του αποτελούν το πλήθος των [1] 10 13
χαρακτήρων κάθε στοιχείου.

21
Εισαγωγή στη Γλώσσα Προγραμματισμού R

toupper(x)

Επιστρέφει το διάνυσμα χαρακτήρων x > toupper(x)


με κεφαλαίους χαρακτήρες. [1] "STATISTICS" "BIOSTATISTICS"

tolower(x)

Επιστρέφει το διάνυσμα χαρακτήρων x > tolower(x)


με πεζούς χαρακτήρες. [1] "statistics" "biostatistics"

casefold(x, upper = FALSE)

Επιστρέφει το διάνυσμα χαρακτήρων x > casefold(x)


είτε με κεφαλαίους χαρακτήρες ( upper = [1] "statistics" "biostatistics"
TRUE ) είτε με πεζούς χαρακτήρες ( > casefold(x,upper=TRUE)
upper = FALSE), όπου το τελευταίο είναι [1] "STATISTICS" "BIOSTATISTICS"
και η προεπιλογή εάν δεν τοποθετηθεί
το όρισμα upper.

paste(x, sep = " " , collapse = " ")

Συνενώνει διανύσματα αφού τα > x <- 1:3


μετατρέψει σε χαρακτήρες. Στο όρισμα > x
sep δηλώνουμε το σύμβολο που [1] 1 2 3
θέλουμε να διαχωρίζουμε τα διανύσματα > y <- letters[1:3]
διαφορετικά εξ ορισμού είναι το κενό. > y
Στο όρισμα collapse δηλώνουμε το [1] "a" "b" "c"
σύμβολο που θέλουμε να διαχωρίσουμε > paste(x,y,sep=".", collapse=" , ")
τα αποτελέσματα διαφορετικά είναι το [1] "1.a , 2.b , 3.c"
κενό.
> x <- 1:5
Εάν εφαρμοστεί σε ένα μόνο αριθμητικό
>x
διάνυσμα τότε λειτουργεί όπως η εντολή
[1] 1 2 3 4 5
as.character.
> paste(x)
[1] "1" "2" "3" "4" "5"

22
Εισαγωγή στη Γλώσσα Προγραμματισμού R

strsplit(x,split= " ")

Διαχωρίζει τα στοιχεία ενός >x <- c("Statistics", "Biostatistics")


διανύσματος χαρακτήρων x στον > strsplit(x, split="a")
χαρακτήρα που ορίζουμε στο [[1]]
όρισμα split. [1] "St" "tistics"
[[2]]
[1] "Biost" "tistics"

substr(x, start, stop)

Εξάγει συγκεκριμένους χαρακτήρες > substr("Statistics",1,4)


από ένα διάνυσμα χαρακτήρων x. [1] "Stat"
Δηλαδή επιστρέφει ότι βρίσκει από
την θέση start έως την θέση stop.

grep("pattern", x, value=)

Επιστρέφει την θέση του στοιχείου > x <- c("statistics", "mathematics",


"biostatistics")
στο διάνυσμα χαρακτήρων x όπου
> grep("stat",x)
εντοπίζεται το μοτίβο pattern. Εάν
[1] 1 3
θέλουμε να δούμε τα αντίστοιχα
> grep("stat",x, value=TRUE)
στοιχεία βάζουμε το όρισμα value =
[1] "statistics" "biostatistics"
TRUE.

sub(pattern, replacement, x)

Αντικαθιστά το πρώτο μοτίβο > x <- c("1,12","2,34","5,12","1,45","10,5")


(pattern) που θα συναντήσει μέσα > x
σε κάθε στοιχείο του διανύσματος x [1] "1,12" "2,34" "5,12" "1,45" "10,5"
με το replacement. > as.numeric(sub(",",".",x))
[1] 1.12 2.34 5.12 1.45 10.50

gsub(pattern, replacement, x)

Αντικαθιστά όλα τα μοτίβα (pattern) > x <-c("1,1,2","2,3,4","5,1,2","1,4,5","10,5")


που θα συναντήσει μέσα σε κάθε > gsub(",",".",x)
στοιχείο του διανύσματος x με το [1] "1.1.2" "2.3.4" "5.1.2" "1.4.5" "10.5"
replacement.

23
Εισαγωγή στη Γλώσσα Προγραμματισμού R

charmatch(char,x,nomatch)

Επιστρέφει την θέση του χαρακτήρα > charmatch("m", c("mean", "median",


"mode"))
char στο διάνυσμα x. Στο nomatch
[1] 0
μπορούμε να βάλουμε την τιμή που
> charmatch("med", c("mean", "median",
θέλουμε να επιστρέψει όταν δεν βρίσκει
"mode"))
κανέναν χαρακτήρα. Εξ ορισμού [1] 2
επιστρέφει 0 όταν βρει πάνω από 1 > charmatch("medians", c("mean",
αντιστοιχίες του char στο x και ΝΑ όταν "median", "mode"),nomatch=99)
δεν βρει καμία. [1] 99

Λογικά Διανύσματα

logical(length)

Δημιουργεί ένα διάνυσμα με ψευδείς > logical(5)


τιμές (FALSE). Ως όρισμα δέχεται το [1] FALSE FALSE FALSE FALSE
FALSE
length στο οποίο ορίζουμε το μήκος του
λογικού διανύσματος.

is.logical(x)

Ελέγχει εάν ένα διάνυσμα είναι λογικό. > x <- c(0:4)


>x
[1] 0 1 2 3 4
> is.logical(x)
[1] FALSE

as.logical(x)

Μετατρέπει ένα αριθμητικό διάνυσμα σε > as.logical(x)


λογικό. Τα μηδενικά μετατρέπονται σε [1] FALSE TRUE TRUE TRUE TRUE
FALSE ενώ όλες οι υπόλοιπες τιμές σε
TRUE.

24
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9.2 Παράγοντες
Με τον όρο παράγοντες εννοούμε τις ποιοτικές μεταβλητές.

factor(x, levels, exclude, ordered)

Με την εντολή factor ορίζουμε ένα > x <- c(1,2,1,1,2)


διάνυσμα x ως ποιοτικό. Με το όρισμα > as.factor(x)
levels καθορίζουμε (με μορφή [1] 1 2 1 1 2
διανύσματος) τις κατηγορίες, Levels: 1 2
διαφορετικά λαμβάνει ως κατηγορίες > x <- c(1,2,1,1,2,12)
όλες τις διακριτές τιμές του διανύσματος > factor(x,exclude=12)
x σε αύξουσα σειρά. Στο όρισμα exclude [1] 1 2 1 1 2 <NA>
καθορίζουμε ποιες κατηγορίες θα Levels: 1 2
παραληφθούν από το διάνυσμα,
διαφορετικά τις παίρνει όλες. Το όρισμα
ordered εξ ορισμού (εάν δηλαδή δεν
χρησιμοποιηθεί) είναι FALSE. Εάν
επιλέξουμε ordered = TRUE ορίζουμε
ένα ποιοτικό διατάξιμο διάνυσμα.

ordered(x, levels=c() )

Εναλλακτικά, αντί της > size <- c("medium","large","small","small","medium")


εντολής > ordered(size, levels=c("small","medium","large"))
[1] medium large small small medium
factor(x, ordered=TRUE)
Levels: small < medium < large

gl(n, κ, length, labels, ordered)

Δημιουργεί τα επίπεδα ενός > gl(n=2,k=2,length=10,labels=c("Male","Female"))


παράγοντα (generate levels), [1] Male Male Female Female Male Male
Female Female Male Male
όπου n ορίζουμε τον αριθμό
Levels: Male Female
των επιπέδων, κ τον αριθμό
των επαναλήψεων, labels
καθορίζουμε τα επίπεδα και
ordered ορίζουμε εάν θα είναι
το ποιοτικό διάνυσμα
διατάξιμο (ordered = TRUE) ή
όχι. (ordered = FALSE).

25
Εισαγωγή στη Γλώσσα Προγραμματισμού R

is.factor(x)

Ελέγχει εάν ένα διάνυσμα είναι ποιοτικό. x <- c(1,2,1,1,2)


> is.factor(x)
[1] FALSE

as.factor(x)

Μετατρέπει ένα διάνυσμα σε ποιοτικό. > as.factor(x)


[1] 1 2 1 1 2
Levels: 1 2

levels(factor(x))

Επιστρέφει τις κατηγορίες από τις > levels(factor(size))


οποίες αποτελείται το ποιοτικό διάνυσμα [1] "large" "medium" "small"
x.

nlevels(factor(x))

Επιστρέφει τον αριθμό των κατηγοριών > nlevels(factor(size))


που αποτελείται ο παράγοντας x. [1] 3

split(x,y)

Μια χρήσιμη εντολή για να χωρίζουμε τα > x <- 1:10


δεδομένα σε ομάδες. > y <- factor(c(rep(1,5),rep(2,5)))
> split(x,y)
$`1`
[1] 1 2 3 4 5

$`2`
[1] 6 7 8 9 10

26
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9.3 Δισδιάστατοι Πίνακες


Στους δισδιάστατους πίνακες (matrices) οι πειραματικές μονάδες τοποθετούνται
διατεταγμένα σε γραμμές και στήλες. Τα αντικείμενα πρέπει να είναι όλα τα ίδιου
τύπου.

matrix(data, nrow, ncol, byrow, dimnames): Δημιουργία ενός δισδιάστατου πίνακα.


Παίρνει ως ορίσματα τα στοιχεία που θέλουμε να χρησιμοποιήσουμε στον πίνακα
(data), τον επιθυμητό αριθμό γραμμών (nrow), τον επιθυμητό αριθμό στηλών (ncol),
το αν θα στοιχεία θα περαστούν κατά στήλη (byrow=FALSE) είτε κατά γραμμή (byrow
= TRUE) και τα ονόματα των γραμμών και των στηλών αντίστοιχα (dimnames). Το
τελευταίο όρισμα δίνεται σε μορφή λίστας, δηλαδή list(c(row_names), c(col_names)).

is.matrix(x): Ελέγχει αν ένα αντικείμενο είναι πίνακας.

as.matrix(x): Μετατρέπει ένα διάνυσμα σε (μονοδιάστατο) πίνακα.

mat.or.vec(nr,nc): Δημιουργία ενός πίνακα μηδενικών κελιών με πρώτο όρισμα τον


αριθμό των γραμμών και δεύτερο των αριθμό των στηλών.

dim(x): Επιστρέφει την διάσταση του πίνακα x.

dim(x)[1]: Επιστρέφει τον αριθμό των γραμμών του πίνακα x.

dim(x)[2]: Επιστρέφει τον αριθμό των στηλών του πίνακα x.

x[i, j]: Επιστρέφει το στοιχείο του πίνακα x το οποίο βρίσκεται στην γραμμή i και στην
στήλη j.

x[i, ]: Επιστρέφει όλα τα στοιχεία του πίνακα x που βρίσκονται στην i γραμμή.

x[ ,j]: Επιστρέφει όλα τα στοιχεία του πίνακα x που βρίσκονται στην j στήλη.

rbind(vector1,vector2…): Δημιουργεί έναν πίνακα ενώνοντας κατά γραμμή τα


στοιχεία των διανυσμάτων vector1, vector2 κτλ.

cbind(vector1,vector2…): Δημιουργεί έναν πίνακα ενώνοντας κατά στήλη τα στοιχεία


των διανυσμάτων vector1, vector2 κτλ.

diag(a:b): Δημιουργία διαγώνιου πίνακα.

27
Εισαγωγή στη Γλώσσα Προγραμματισμού R

diag(n): Δημιουργία ταυτοτικού πίνακα nxn.

colSums(x,na.rm): Επιστρέφει το άθροισμα κάθε στήλης του πίνακα x. Έχουμε


επίσης την επιλογή να προσμετρήσουμε και τις ελλείπουσες τιμές στον υπολογισμό
(na.rm = TRUE) ή όχι (na.rm = FALSE) όπου είναι και η προεπιλογή εάν δεν
τοποθετήσουμε το συγκεκριμένο όρισμα.

rowSums(x,na.rm): Επιστρέφει το άθροισμα κάθε γραμμής του πίνακα x. Παρομοίως


με την προηγούμενη εντολή δουλεύει και εδώ το όρισμα na.rm

colMeans(x,na.rm): Επιστρέφει τον μέσο όρο των κάθε στήλης του πίνακα x.
Παρομοίως με την προηγούμενη εντολή δουλεύει και εδώ το όρισμα na.rm

rowMeans(x,na.rm): Επιστρέφει τον μέσο όρο των κάθε γραμμής του πίνακα x.
Παρομοίως με την προηγούμενη εντολή δουλεύει και εδώ το όρισμα na.rm

max.col(x, ties.method=c("random", "first", "last")): Επιστρέφει την θέση του


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

solve(A,y): Επιστρέφει την λύση ενός συστήματος της μορφής Ax = y.

scale(x, center = TRUE, scale = TRUE): Υπολογίζει συνολικά τον μέσο και την τυπική
απόκλιση και στην συνέχεια εφαρμόζει σε κάθε στοιχείο τυποποίηση. Πρακτικά
εφαρμόζει την εξής διαδικασία: (x - mean(x)) / sd(x) . Στην περίπτωση όπου επιλέξουμε
scale = FALSE δεν διαιρεί με την τυπική απόκλιση.

model.matrix(object, ...): Επιστρέφει τον πίνακα σχεδιασμού (εφαρμογή συνήθως σε


μοντέλα παλινδρόμησης)

outer(x,y,FUN): Εφαρμόζει την συνάρτηση FUN σε δύο πίνακες ή διανύσματα.

Εφαρμογή:

> outer(month.abb, 2015:2017, FUN = "paste")


[,1] [,2] [,3]
[1,] "Jan 2015" "Jan 2016" "Jan 2017"
[2,] "Feb 2015" "Feb 2016" "Feb 2017"
[3,] "Mar 2015" "Mar 2016" "Mar 2017"
[4,] "Apr 2015" "Apr 2016" "Apr 2017"

28
Εισαγωγή στη Γλώσσα Προγραμματισμού R

[5,] "May 2015" "May 2016" "May 2017"


[6,] "Jun 2015" "Jun 2016" "Jun 2017"
[7,] "Jul 2015" "Jul 2016" "Jul 2017"
[8,] "Aug 2015" "Aug 2016" "Aug 2017"
[9,] "Sep 2015" "Sep 2016" "Sep 2017"
[10,] "Oct 2015" "Oct 2016" "Oct 2017"
[11,] "Nov 2015" "Nov 2016" "Nov 2017"
[12,] "Dec 2015" "Dec 2016" "Dec 2017"

Πίνακας 9.3.1: Τελεστές πινάκων στην R

Τελεστής Περιγραφή

%*% (Εσωτερικό) Γινόμενο Πινάκων

* Γινόμενο Πινάκων (στοιχείο προς στοιχείο)

+ Πρόσθεση Πινάκων (στοιχείο προς στοιχείο)

- Αφαίρεση Πινάκων (στοιχείο προς στοιχείο)

% Διαίρεση Πινάκων (στοιχείο προς στοιχείο)

%o% Εξωτερικό Γινόμενο Πινάκων

%x% Kronecker Γινόμενο Πινάκων

t() Ανάστροφος Πίνακας

solve() Αντίστροφος Πίνακας

eigen() Ιδιοτιμές και Ιδιοδιανύσματα Πίνακα

det() Ορίζουσα Πίνακα

29
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9.4 Πολυδιάστατοι Πίνακες


Οι πολυδιάστατοι πίνακες ( Arrays) είναι πίνακες με πάνω από 2 διαστάσεις.

array(x, dim=length(x), dimnames): Δημιουργία πολυδιάστατου πίνακα όπου


δέχεται ως ορίσματα τα στοιχεία του πίνακα (x), το μέγεθος κάθε διάστασης (dim)
καθώς και το όνομα κάθε διάστασης (dimnames).

is.array(x): Ελέγχει εάν το αντικείμενο x είναι πολυδιάστατος πίνακας.

as.array(x, …): Μετατρέπει ένα διάνυσμα σε πολυδιάστατο πίνακα.

Οι περισσότερες εντολές των δισδιάστατων πινάκων εφαρμόζονται και στους


πολυδιάστατους.

9.5 Πλαίσια Δεδομένων


Τα πλαίσια δεδομένων (Data Frames) είναι δισδιάστατοι πίνακες όπου τα αντικείμενα
μπορεί να είναι διαφορετικού τύπου.

data.frame(x, rownames): Δημιουργία ενός πλαισίου δεδομένων. Υπάρχει και η


επιλογή να δώσουμε ονόματα στις γραμμές (rownames).

is.data.frame(x): Ελέγχουμε εάν ένα αντικείμενο είναι πλαίσιο δεδομένων.

as.data.frame(x): Μετατρέπουμε έναν δισδιάστατο πίνακα σε πλαίσιο δεδομένων.

names(data.frame): Δίνουμε όνομα στις μεταβλητές του πλαισίου δεδομένων (η


συγκεκριμένη εντολή μπορεί να δουλέψει για οποιοδήποτε αντικείμενο).

col.names(data.frame): Δίνουμε ονόματα στις στήλες του πλαισίου δεδομένων.

row.names(data.frame): Δίνουμε ονόματα στις γραμμές του πλαισίου δεδομένων.

head(data.frame,n): Επιστρέφει τις πρώτες n γραμμές του πλαισίου δεδομένων.

tail(data.frame,n): Επιστρέφει τις τελευταίες n γραμμές του πλαισίου δεδομένων.

data.frame$col.name: Το δολάριο είναι ένα σύμβολο το οποίο χρησιμοποιούμε όταν


θέλουμε να εξάγουμε τα στοιχεία της στήλης col.name από το πλαίσιο δεδομένων
data.frame.

30
Εισαγωγή στη Γλώσσα Προγραμματισμού R

rename(data.frame, c(oldname="newname")): Με την εντολή rename μπορούμε να


μετονομάσουμε τις στήλες ενός πλαισίου δεδομένων.

attach(data.frame): Με την εντολή attach έχουμε πρόσβαση στο πλαίσιο δεδομένων


χωρίς να είναι απαραίτητο να αναφέρουμε τα ονόματα των στηλών με χρήση του
δολαρίου. Με την εντολή detach(data.frame) επιστρέφουμε εκτός πλαισίου.

subset(data.frame, condition, select): Επιστρέφει υποσύνολα του πλαισίου


δεδομένων που ικανοποιούν την συνθήκη condition. Επίσης υπάρχει η επιλογή μέσω
του ορίσματος select να υποδείξουμε συγκεκριμένη ή συγκεκριμένες στήλες που
θέλουμε να επιστρέψει.

transform(data.frame, new.variable = expression): Μπορούμε να δημιουργήσουμε


μια νέα μεταβλητή (new.variable) στο πλαίσιο δεδομένων (data.frame) σύμφωνα με
τον μετασχηματισμό ( expression) κάποιας ήδη υπάρχουσας στο πλαίσιο δεδομένων
μεταβλητής. Επίσης έχουμε την δυνατότητα απλά της προσθήκης κάποιας μεταβλητής
μέσα στο πλαίσιο δεδομένων (new.variable.name = old.variable.name).

with(data.frame, expression): Επιστρέφει τις εκτιμώμενες τιμές σύμφωνα με την


έκφραση που έχουμε δώσει να υπολογίσει πάνω σε κάποια μεταβλητή (expression)
του πλαισίου δεδομένων (data.frame).

by(data.frame, factorlist, function): Εφαρμόζει μια συνάρτηση (function) σε κάθε


επίπεδο ενός ή περισσοτέρων παραγόντων (factorlist) του πλαισίου δεδομένων
(data.frame).

merge(data.frame1,data.frame2, all): Συγχωνεύει το data.frame1 και το data.frame2.


Η προεπιλογή στο όρισμα all είναι all = FALSE, όπου έτσι επιστρέφει μόνο τις γραμμές
με κοινές τιμές. Εάν επιλέξουμε all = TRUE τότε επιστρέφει την ένωση των 2 πλαισίων,
ενώ στην περίπτωση που συναντά κελιά όπου για ένα από τα 2 πλαίσια δεν αντιστοιχεί
τιμή τοποθετεί NA (Not Available).

na.omit(data.frame): Επιστρέφει τα στοιχεία του πλαισίου δεδομένων data.frame


αφού πρώτα έχει διαγράψει ολόκληρες τις γραμμές, εκείνες για τις οποίες υπάρχει
τουλάχιστον ένα κελί με ελλιπή τιμή. [ see also: na.fail(object, ...) , na.exclude(object,
...) , na.pass(object, ...) ]

expand.grid(..., KEEP.OUT.ATTRS = TRUE, stringsAsFactors = TRUE):


Επιστρέφει ένα πλαίσιο δεδομένων με όλους τους συνδυασμούς των στοιχείων των
δοσμένων παραμέτρων.

31
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9.6 Λίστες
Οι λίστες είναι αντικείμενα δεδομένων που μπορούν να αποτελούνται από στοιχεία
διαφορετικής δομής.

list(…): Με την εντολή list() δημιουργούμε μια λίστα, ενώ ως ορίσματα


χρησιμοποιούνται τα αντικείμενα τα οποία την απαρτίζουν, δίνοντας τους ταυτόχρονα
ένα όνομα.

is.list(object): Ελέγχουμε εάν το αντικείμενο object είναι λίστα.

as.list(object): Μετατρέπουμε το αντικείμενο object σε λίστα.

[[ ]] : Όπως με το δολάριο ($) που έχουμε ήδη δει έτσι και με την διπλή αγκύλη
μπορούμε να έχουμε πρόσβαση στα στοιχεία μιας λίστας.

unlist(list): Επιστρέφει ένα διάνυσμα το οποίο περιέχει ατομικά όλα τα στοιχεία που
περιέχει η λίστα list.

32
Εισαγωγή στη Γλώσσα Προγραμματισμού R

9.7 Συναρτήσεις
Μπορούμε να δούμε έτοιμο τον κώδικα μιας συνάρτησης απλά πληκτρολογώντας το
όνομα της στην κονσόλα.

Βέβαια ο στόχος είναι να μπορούμε να κατασκευάσουμε τις δικές μας συναρτήσεις.


Αυτό υλοποιείται με την εντολή function(). Η δομή μια συνάρτησης είναι η εξής:

name_of_function <- function(όρισμα1, όρισμα2, ….) {


Μεταβλητές Εισόδου: Οι
εντολές μεταβλητές εκείνες τις
οποίες θα
χρησιμοποιήσουμε στην
συγκεκριμένη συνάρτηση.
return(έκφραση)

Προγραμματισμός } Το αποτέλεσμα μπορεί να


είναι αντικείμενο
οποιουδήποτε τύπου.

Για να είμαστε σε θέση όμως να κατασκευάσουμε τις δικές μας συναρτήσεις πρέπει να
γνωρίζουμε τις δομές ελέγχου (control structures) που διαθέτει η R. Θα κάνουμε μια
απλή αναφορά στις διάφορες δομές ελέγχου καθώς και μια σύντομη περιγραφή τους.

➢ If
if (condition) { if (condition) {
Για την συνθήκη που θα είναι
expression expression αληθής εκτελεί την
} else { } else if (condition) { αντίστοιχη ακολουθία
εντολών αλλιώς εκτελεί την
cons.expression cons.expression τελευταία ακολουθία
} } else { εντολών.

alt.expression
}

➢ ifelse
ifelse(test,action.if.true, action.if.else) Εάν η συνθήκη test είναι αληθής τότε
επιστρέφει το αποτέλεσμα
action.if.true αλλιώς το action.if.else

➢ for
for(index in seq) { Για έναν αριθμό επαναλήψεων ( που
καθορίζεται στο seq) εκτελεί κάποιες
εντολές.

33
Εισαγωγή στη Γλώσσα Προγραμματισμού R

commands
}

➢ while
while(condition) { Εκτελεί κάποιες εντολές όσο η
συνθήκη condition είναι αληθής.
commands
}

➢ repeat
repeat
{ Εκτελεί κάποιες εντολές μέχρις ότου η
συνθήκη condition γίνει ψευδής και
Commands τερματίσει ο βρόγχος.
If(condition)
Break
}

➢ next
for(index in seq) {
Όταν η συνθήκη είναι αληθής
if (condition) { προσπερνάει τις συγκεκριμένες
next επαναλήψεις ( αντί να τερματίσει τον
βρόγχο).
}
}

Βέβαια υπάρχουν συναρτήσεις που είναι ενσωματωμένες στην R και διευκολύνουν τον
χειρισμό των δεδομένων κάνοντας έτσι τον προγραμματισμό ευκολότερο. Αυτές
ανήκουν στην οικογένεια των συναρτήσεων apply και είναι οι εξής:

➢ apply(X, MARGIN, FUN)


Η συνάρτηση apply εφαρμόζεται σε έναν πίνακα Χ (δισδιάστατο ή
πολυδιάστατο). Το όρισμα MARGIN μας δείχνει ως προς ποια διάσταση του
πίνακα θα εφαρμοστεί η συνάρτηση FUN. Δηλαδή εάν ορίσουμε MARGIN=1 η

34
Εισαγωγή στη Γλώσσα Προγραμματισμού R

συνάρτηση FUN θα εφαρμοστεί κατά γραμμή, ενώ εάν ορίσουμε MARGIN=2 η


συνάρτηση FUN θα εφαρμοστεί κατά στήλη.
Εφαρμογή: apply(x, 1, sum): Επιστρέφει το άθροισμα του πίνακα x κατά
γραμμή.
➢ sapply(X, FUN)
Η συνάρτηση sapply εφαρμόζει την συνάρτηση FUN σε κάθε μεταβλητή ενός
πλαισίου δεδομένων ή λίστας Χ χωρίς την χρήση κάποιου βρόγχου.
Εφαρμογή: sapply(data, mode): Επιστρέφει τον τύπο των στοιχείων κάθε
μεταβλητής του πλαισίου δεδομένων data.
➢ vapply( X, FUN, FUN.VALUE)
Η συνάρτηση vapply δουλεύει όπως και η supply με την διαφορά ότι υπάρχει
το όρισμα FUN.VALUE όπου ορίζεις τον τύπο της τιμής που επιστρέφει. Οι
επιλογές είναι μεταξύ logical, integer, double ή complex.
➢ tapply(X, INDEX, FUN)
Η συνάρτηση tapply εφαρμόζει την συνάρτηση FUN στην μεταβλητή X για κάθε
κατηγορία της μεταβλητής INDEX.
Εφαρμογή: tapply(data$age, data$gender, mean): Επιστρέφει τον μέσο όρο
ηλικίας για κάθε φύλο.
➢ lapply(X, FUN)
Η συνάρτηση lapply επιστρέφει μια λίστα όπου κάθε στοιχείο της είναι
αποτέλεσμα της εφαρμογής της συνάρτησης FUN στο αντικείμενο Χ.
Εφαρμογή: lapply(x, mean): Επιστρέφει τον μέσο όρο του αντικειμένου x σε
μορφή λίστας.
➢ mapply(FUN, MoreArgs)
Η συνάρτηση mapply εφαρμόζει την συνάρτηση FUN ταυτόχρονα πάνω σε
κάθε στοιχείο των arguments.
Εφαρμογή: mapply(rep, 1:4, 4:1): Επαναλαμβάνει την τιμή 1 4-φορές, την τιμή
2 3-φορές, την τιμή 3 2-φορές και την τιμή 4 1-φορά.

Τέλος, μια χρήσιμη εντολή στον προγραμματισμό είναι η sweep().

➢ sweep(array, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...)


Επιστρέφει έναν πίνακα (ίδιο με τον array που βάλαμε) και εξάγει τα
περιγραφικά μέτρα που δίνουμε στο stats (κατά γραμμή ή κατά στήλη –
margin). Στο όρισμα FUN δηλώνουμε την συνάρτηση που χρησιμοποιούμε για
να εκτελεστεί το sweep.

35
Εισαγωγή στη Γλώσσα Προγραμματισμού R

10. Γενικές εντολές στην R


▪ help(topic, package = NULL) : Αναζητούμε βοήθεια για κάποια συνάρτηση.
Στο όρισμα topic τοποθετούμε το όνομα της εντολής για την οποία ζητείται η
βοήθεια και προαιρετικά υπάρχει η δυνατότητα του ορίσματος package όπου
μπορούμε να δηλώσουμε το πακέτο μέσα στο οποίο θα κάνει την αναζήτηση
αλλιώς εξ ορισμού θα χρησιμοποιήσει στην αναζήτηση όλα τα διαθέσιμα
πακέτα. Εναλλακτικά υπάρχει και η επιλογή ?topic
▪ builtins(): Επιστρέφει μια λίστα με όλες τις ενσωματωμένες συναρτήσεις της
R ( List all built – in functions )
▪ ls(): Επιστρέφει μια λίστα με τα αντικείμενα του τρέχοντος περιβάλλοντος
εργασίας
▪ rm(x): Διαγράφει το αντικείμενο x από το τρέχον περιβάλλον εργασίας. Επίσης
με την εντολή rm(list=ls()) διαγράφει όλα τα αντικείμενα που υπάρχουν στο
περιβάλλον εργασίας
▪ Sys.time(): Επιστρέφει την τρέχουσα ώρα του συστήματος
▪ Sys.Date():Επιστρέφει την τρέχουσα ημέρα του συστήματος
▪ getwd(): Επιστρέφει τον φάκελο εργασίας (Get working directory)
▪ setwd(path): Αλλάζει τον φάκελο εργασίας (Set working directory) και όπου
path η επιθυμητή από τον χρήστη διαδρομή
▪ list.files(): Επιστρέφει μια λίστα με όλα τα αρχεία του φακέλου εργασίας
▪ file.info(file): Επιστρέφει πληροφορίες σχετικά με τον δοσμένο φάκελο
▪ sessionInfo():Επιστρέφει πληροφορίες σχετικά με την τρέχουσα έκδοση της
R καθώς και τα συνημμένα πακέτα της
▪ R.version: Επιστρέφει πληροφορίες σχετικά με την τρέχουσα έκδοση της R
▪ save.image: Σώζει το τρέχον περιβάλλον εργασίας
▪ memory.size(): Επιστρέφει την συνολικό μέγεθος μνήμης που χρησιμοποιεί η
R
▪ letters: Επιστρέφει τα 26 πεζά γράμματα της Ρωμαϊκής αλφαβήτου
▪ LETTERS: Επιστρέφει τα 26 κεφαλαία γράμματα της Ρωμαϊκής αλφαβήτου
▪ month.abb: Επιστρέφει τα 3 πρώτα γράμματα από τα Αγγλικά ονόματα των
μηνών του χρόνου
▪ month.name: Επιστρέφει τα Αγγλικά ονόματα των μηνών του χρόνου
▪ q(): Τερματίζει το πρόγραμμα.

36
Εισαγωγή στη Γλώσσα Προγραμματισμού R

11. Πακέτα στην R


Τα πακέτα ( packages) αποτελούν μια συλλογή από συναρτήσεις και σετ δεδομένων
κατασκευασμένα από χρήστες της R, με σκοπό την επέκταση των δυνατοτήτων της
γλώσσας. Ο κατάλογος όπου τα πακέτα είναι αποθηκευμένα ονομάζεται βιβλιοθήκη
(library).

Για να εγκαταστήσουμε ένα πακέτο στην R πληκτρολογούμε την εντολή


install.packages(“το όνομα του πακέτου”). Η R θα κατεβάσει το πακέτο από το
CRAN επομένως απαιτείται σύνδεση στο internet.

Για να δούμε όλα τα διαθέσιμα πακέτα που υπάρχουν πληκτρολογούμε την εντολή
new.packages().

Για να ενημερώσουμε τα πακέτα, που έχουμε ήδη φορτώσει στον υπολογιστή μας,
στην πιο πρόσφατη διαθέσιμη έκδοση χρησιμοποιούμε την εντολή
update.packages().

Για να αφαιρέσουμε κάποιο πακέτο πληκτρολογούμε την εντολή detach(“package:το


όνομα του πακέτου”).

Με την εντολή remove.packages() αφαιρούμε όλα τα εγκαταστημένα στον


υπολογιστή μας πακέτα.

Για να φορτώσουμε ένα πακέτο στον υπολογιστή μας, έτσι ώστε να χρησιμοποιήσουμε
κάποια από τις διαθέσιμες λειτουργίες του, πληκτρολογούμε την εντολή
library(“όνομα του πακέτου”).

Με την εντολή library(h=”όνομα του πακέτου”) βλέπουμε πληροφορίες σχετικά με


όλες τις συναρτήσεις που περιλαμβάνει το εν λόγω πακέτο.

Για να δούμε όλα τα πακέτα που έχουμε φορτώσει στον υπολογιστή μας και την
περιγραφή τους πληκτρολογούμε την εντολή library().

Με την εντολή dir(.libPaths()) επιστρέφει τα ονόματα των εγκαταστημένων στον


υπολογιστή μας πακέτων.

Με την εντολή .libPaths() επιστρέφει το μονοπάτι ( path) στο οποίο αποθηκεύονται οι


βιβλιοθήκες στον υπολογιστή μας.

37
Εισαγωγή στη Γλώσσα Προγραμματισμού R

12. Αποθήκευση Αντικειμένων


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

Για όσους εργάζονται στο R-Studio αρκεί απλά να κατευθυνθούν στο File – New
File – R script. Θα ανοίξει ένα νέο έγγραφο κειμένου στο πάνω αριστερό παράθυρο
όπου εκεί ο χρήστης θα μπορεί να γράφει τις εντολές και έπειτα να τις τρέχει πατώντας
το εικονίδιο Run. Στο ίδιο menu λοιπόν, υπάρχει και η επιλογή να αποθηκεύσουμε
αυτά τα έγγραφα κειμένου οπουδήποτε στον υπολογιστή μας. Βέβαια υπάρχουν και
διάφορες εντολές αποθήκευσης αντικειμένων στην R.

➢ savehistory(file = "pathname.Rhistory"): Σώζει τις εντολές που έχουμε


τρέξει στην κονσόλα στην τρέχουσα περίοδο.
➢ save(x1,x2 … , file="path.txt"): Επιτρέπει την αποθήκευση πολλών
αντικειμένων ταυτόχρονα
➢ write(x, file="pathname.txt"): Επιτρέπει να σώσουμε το διάνυσμα x είτε στον
φάκελο από όπου τρέχουμε την R είτε με το όρισμα file να ορίσουμε την
διαδρομή.
➢ write(t(x), file="pathname.txt"): Επιτρέπει να σώσουμε τον πίνακα x με τον
τρόπο που περιγράψαμε προηγουμένως. Εδώ η διαφορά είναι ότι η εντολή
αναστρέφει τον πίνακα επομένως πρέπει να αποθηκεύσουμε τον ανάστροφο
του, t(x).
➢ write.table(x, file="pathname.txt"): Επιτρέπει να σώσουμε το πλαίσιο
δεδομένων x.
➢ dput(x, file="pathname.txt"): Επιτρέπει να σώσουμε ένα αντικείμενο, έστω x
➢ dump(list, file = "pathname.dumpdata.R"): Επιτρέπει να σώσουμε ένα ή
παραπάνω αντικείμενα, ενώ στην περίπτωση πίνακα δεν σώζει τον ανάστροφο
όπως στην περίπτωση της εντολής write.
➢ sink(file): Αποθηκεύει τα αποτελέσματα της εργασίας μας σε ένα αρχείο για
μελλοντική χρήση.

38
Εισαγωγή στη Γλώσσα Προγραμματισμού R

13. Ανάκτηση Αντικειμένων


Στην R μπορούμε επίσης να ανακτήσουμε αντικείμενα τα οποία έχουμε αποθηκεύσει
στον υπολογιστή μας. Κάποιες εντολές είναι οι εξής:

➢ scan("path"): Επιτρέπει να ανακτήσουμε ένα διάνυσμα ή έναν πίνακα που


βρίσκεται στην θέση path του υπολογιστή.
(Επιπλέον με την εντολή scan(what= ,nlines= ) μπορούμε να εισάγουμε δεδομένα
από το πληκτρολόγιο. Στο όρισμα what ορίζουμε τον τύπο των δεδομένων που
σκοπεύουμε να εισάγουμε και με το όρισμα nlines καθορίζουμε τον αριθμό των τιμών
που θα αναμένει. Μόλις το ξεπεράσει σταματάει. Μία άλλη εντολή αλληλεπίδρασης με
τον χρήστη είναι η εντολή edit)

➢ source("path"): Παρόμοια με την εντολή scan με περισσότερα


χαρακτηριστικά.
➢ load(file="path.txt"): Επιτρέπει την ανάκτηση των αντικειμένων τα οποία
έχουμε αποθηκεύσει με την εντολή save.
➢ dget(file="path.txt"): Επιτρέπει την ανάκτηση ενός αντικειμένου το οποίο
έχουμε αποθηκεύσει με την εντολή dput
➢ read.table(file, header, sep, quote, dec, skip, nrows, stringsAsFactors,
row.names, col.names, na.strings): Με την εντολή read.table μπορούμε να
ανακτήσουμε ένα πλαίσιο δεδομένων. Ορίζουμε header=TRUE εάν η πρώτη
γραμμή περιέχει τα ονόματα των μεταβλητών, αλλιώς εξ ορισμού είναι
header=FALSE. Στο όρισμα sep ορίζουμε μέσα σε εισαγωγικά τον χαρακτήρα
με τον οποίο διαχωρίζονται τα δεδομένα μεταξύ τους, όταν αυτό δεν είναι το
κενό. Εάν τα δεδομένα μας βρίσκονται μέσα σε μονά ή διπλά εισαγωγικά αυτό
πρέπει να το ορίσουμε στο όρισμα quote μέσα σε εισαγωγικά. Στο όρισμα dec
ορίζουμε το σύμβολο διαχωρισμού των δεκαδικών, όταν αυτό δεν είναι η τελεία.
Εάν επιθυμούμε να παραβλέψουμε κάποιες γραμμές στην αρχή του αρχείου
δηλώνουμε στο όρισμα skip τον αριθμό τους. Επίσης στο όρισμα nrows
δηλώνουμε τον μέγιστο αριθμό γραμμών που επιθυμούμε να διαβάσει,
διαφορετικά ανακτά ολόκληρο το αρχείο. Με την εντολή read.table τα
διανύσματα χαρακτήρων μετατρέπονται σε κατηγορικά. Για να μην συμβεί αυτό
ορίζουμε stringsAsFactors=FALSE. Στο όρισμα row.names έχουμε την επιλογή
να δώσουμε ένα διάνυσμα με τα ονόματα των γραμμών. Στο όρισμα col.names
έχουμε την επιλογή να δώσουμε ένα διάνυσμα με τα ονόματα των στηλών. Εξ
ορισμού, εάν δεν υπάρχουν ήδη ονόματα στις στήλες, η R ορίζει col.names=V,
δηλαδή ως ονόματα παίρνει τον αριθμό της αντίστοιχης στήλης. Τέλος στο

39
Εισαγωγή στη Γλώσσα Προγραμματισμού R

όρισμα na.strings δηλώνουμε τον χαρακτήρα ή χαρακτήρες όπου θα εκλάβει η


R ως NA, δηλαδή ως ελλείπουσες τιμές.

Όπως αναφέραμε παραπάνω στο όρισμα sep ορίζουμε τον τρόπο με τον οποίο
διαχωρίζονται τα δεδομένα μεταξύ τους. Αυτό δεν χρειάζεται απαραίτητα στην
περίπτωση δεδομένων που διαχωρίζονται με κόμμα (comma separated values) διότι
υπάρχει η εντολή read.csv(). Επίσης για δεδομένα τα οποία διαχωρίζονται μεταξύ
τους με στηλοθέτες (tab delimited values) υπάρχει η εντολή read.delim(). Τέλος με την
εντολή read.fwf(file, widths, header, sep, skip, row.names, col.names, n)
μπορούμε να ανακτήσουμε δεδομένα δηλώνοντας στο όρισμα width το πλάτος το
οποίο διαχωρίζεται κάθε στήλη του πίνακα.

Εάν έχουμε κάποιο αρχείο Excel (.xls) το μετατρέπουμε σε αρχείο csv (comma
separated values), όπου αυτό γίνεται εύκολα από το μενού File – Save as - … και
έπειτα το ανακτούμε με την εντολή read.csv(). Εκτός βέβαια αυτής της διαδικασίας
έχουμε την επιλογή μέσω της βιβλιοθήκης gdata να ανακτήσουμε απευθείας ένα
αρχείο Excel.

> install.packages("gdata")
> library(“gdata”)
> help(“gdata”)
> mydata = read.xls("mydata.xls")

Στην περίπτωση που επιθυμούμε να ανακτήσουμε δεδομένα από άλλα στατιστικά


πακέτα, μπορούμε να εγκαταστήσουμε στον υπολογιστή μας την βιβλιοθήκη foreign.

> install.packages(“foreign”)
> library (“foreign”)
> help(“foreign”)

40
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Πίνακας 13.1: Εντολές ανάκτησης δεδομένων από γνωστά στατιστικά πακέτα με


χρήση της βιβλιοθήκης foreign.

Στατιστικό Πακέτο Εντολή Ανάκτησης Δεδομένων

SPSS read.spss()

STATA read.dta()

SAS read.xport()

MINITAB read.mtb()

14. Η εντολές menu και select.list

Οι εντολές menu και select.list είναι πολύ χρήσιμες για την κατασκευή
ερωτηματολογίων και στην περίπτωση όπου μέσα σε ένα πρόγραμμα θέλουμε να
δώσουμε στην χρήστη την δυνατότητα να επιλέγει διαφορετική ομάδα εντολών κάθε
φορά, ανάλογα τις ανάγκες του. Η διαφορά τους είναι ότι με την εντολή menu
μπορούμε να δώσουμε μόνο μια απάντηση ενώ με την εντολή select.list δίνεται η
δυνατότητα πολλαπλών επιλογών. Επιπρόσθετα στην εντολή menu
πληκτρολογώντας ο χρήστης την τιμή 0 το πρόγραμμα τερματίζεται.

Εφαρμογή 1

> plot <- function(x){


+ option <- menu(c("Ποσοτικά","Ποιοτικά"),title="Ποιος είναι ο τύπος των
δεδομένων?")
+ if(option==1){
+ hist(x)
+ }else{
+ pie(x)
+ }
+ }
> x <- rnorm(100)

41
Εισαγωγή στη Γλώσσα Προγραμματισμού R

> plot(x)
Ποιος είναι ο τύπος των δεδομένων?

1: Ποσοτικά
2: Ποιοτικά

Selection: 1

Εφαρμογή 2

> option <- select.list(c("Έμφραγμα Μυοκαρδίου","Στηθάγχη","Καρδιακή


Ανεπάρκεια","Μυοκαρδιοπάθεια","Υπέρταση"),title="Νοσήματα με τα οποία έχετε
διαγνωστεί στο παρελθόν",multiple=TRUE)
Νοσήματα με τα οποία έχετε διαγνωστεί στο παρελθόν

1: Έμφραγμα Μυοκαρδίου
2: Στηθάγχη
3: Καρδιακή Ανεπάρκεια
4: Μυοκαρδιοπάθεια
5: Υπέρταση

Enter one or more numbers separated by spaces, or an empty line to cancel


1: 1 2
> option
[1] "Έμφραγμα Μυοκαρδίου" "Στηθάγχη"

42
Εισαγωγή στη Γλώσσα Προγραμματισμού R

15. Περιγραφική Στατιστική στην R


Τα δεδομένα που θα έχουμε κάθε φορά να επεξεργαστούμε μπορεί να είναι είτε
ποσοτικά (αριθμητικά δεδομένα) είτε ποιοτικά (κατηγορικά δεδομένα). Επομένως σε
κάθε περίπτωση πρέπει να χρησιμοποιούμε τα αντίστοιχα περιγραφικά μέτρα.

15.1 Περιγραφικά Μέτρα Ποσοτικών Δεδομένων


Τα βασικά περιγραφικά μέτρα στην R δίνονται από τις επόμενες συναρτήσεις:
(όπου data: οποιαδήποτε ποσοτική μεταβλητή ή αριθμητικό διάνυσμα)

> summary(data) # Επιστρέφει την ελάχιστη και μέγιστη τιμή, τον μέσο όρο,
την διάμεσο, καθώς και το 1ο και 3ο τεταρτημόριο.

> min(data) # Επιστρέφει την ελάχιστη τιμή

> max(data) # Επιστρέφει την μέγιστη τιμή

> range(data) # Επιστρέφει το εύρος

> mean(data) # Επιστρέφει την μέση τιμή

> median(data) # Επιστρέφει την διάμεσο

> var(data) # Επιστρέφει την διακύμανση

> sd(data) # Επιστρέφει την τυπική απόκλιση

> mad(data) # Επιστρέφει την μέση απόλυτη απόκλιση

> IQR(data) # Επιστρέφει το ενδοτεταρτημοριακό εύρος

> quantile(data) # Επιστρέφει τα τεταρτημόρια ( 1ο, 2ο, 3ο)

> quantile(data, c(0.20,0.60)) # Επιστρέφει το 20ο και 60ο ποσοστημόριο και


αντίστοιχα μπορούμε να εμφανίσουμε όποια
ποσοστημόρια θέλουμε.

> cor(x,y) # Επιστρέφει τον βαθμό γραμμικής συσχέτισης μεταξύ


των διανυσμάτων x και y

43
Εισαγωγή στη Γλώσσα Προγραμματισμού R

> cumsum(x) # Επιστρέφει την αθροιστική συχνότητα του διανύσματος


x

> cumprod(x) # Για κάθε στοιχείο επιστρέφει το γινόμενο όλων των


στοιχείων μέχρι εκείνο το σημείο

> colMeans(x) # Επιστρέφει τον μέσο όρο για κάθε στήλη του πλαισίου
δεδομένων x

> colSums(x) # Επιστρέφει το άθροισμα για κάθε στήλη του πλαισίου


δεδομένων x

> rowMeans(x) # Επιστρέφει τον μέσο όρο για κάθε γραμμή του πλαισίου
δεδομένων x

> rowSums(x) # Επιστρέφει το άθροισμα για κάθε γραμμή του πλαισίου


δεδομένων x

Εάν στις παραπάνω εντολές προσθέσουμε το όρισμα na.rm = T , στην περίπτωση


όπου τα δεδομένα μου περιέχουν ελλείπουσες τιμές αυτές θα αγνοηθούν. Βέβαια σε
κάθε περίπτωση υπάρχουν επιπλέον χρήσιμα ορίσματα. Για περισσότερες
λεπτομέρειες πληκτρολογήστε help("όνομα_συνάρτησης ").

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

> install.packages(“psych”)
> library(“psych”)

Η εντολή describe(mydata) επιστρέφει για τα δεδομένα μας την διακύμανση, το


δείγμα, την μέση τιμή, την τυπική απόκλιση, την διάμεσο, τον περικομμένο μέσο, την
μέση απόλυτη απόκλιση, την ελάχιστη και μέγιστη τιμή, τον συντελεστή ασυμμετρίας (
skewness()), τον συντελεστή κύρτωσης (kyrtosis()), και το τυπικό σφάλμα εκτίμησης.
Επίσης, η εντολή describeBy(data,group) επιστρέφει τα περιγραφικά μέτρα των
δεδομένων data για κάθε κατηγορία της μεταβλητής group.

> install.packages("Hmisc")
> library("Hmisc")

44
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Η εντολή describe(mydata) επιστρέφει τον αριθμό του δείγματος, τον αριθμό των
ελλειπουσών τιμών, την μέση τιμή, τα 5th, 10th,25th, 50th,75th,9th, 95th ποσοστημόρια, τις
5 πρώτες και τις 5 τελευταίες τιμές του δείγματος μας.

> install.packages("pastecs")
> library("pastecs")

Η εντολή stat.desc(mydata) επιστρέφει για τα δεδομένα μας τον αριθμό του


δείγματος, τον αριθμό των κενών τιμών, το πλήθος των ελλειπουσών τιμών, την
ελάχιστη και μέγιστη τιμή, το εύρος, το άθροισμα, την διάμεσο, την μέση τιμή, το τυπικό
σφάλμα της μέσης τιμής, το διάστημα εμπιστοσύνης 95% της μέσης τιμής, την
διακύμανση, την τυπική απόκλιση και τον συντελεστή μεταβλητότητας.

Τέλος υπάρχουν έτοιμες συναρτήσεις στην R τις οποίες μπορούμε να


χρησιμοποιήσουμε για τον σκοπό αυτό.

Η συνάρτηση sapply(mydata, descriptive) επιστρέφει το περιγραφικό μέτρο που


επιθυμούμε για τα δεδομένα μας.

Η συνάρτηση tapply(continuous.variable, categorical.variable, descriptive)


επιστρέφει το περιγραφικό μέτρο (descriptive) της μεταβλητής continuous.variable στα
διάφορα επίπεδα της μεταβλητής categorical.variable.

Η εντολή aggregate(mydata, by, FUN) διαχωρίζει τα δεδομένα (data) σε υποσύνολα


(by) και υπολογίζει περιγραφικά μέτρα (FUN) για καθένα από αυτά.

15.2 Περιγραφική ανάλυση Ποιοτικών Δεδομένων


Με την εντολή table(variable) κατασκευάζεται ο πίνακας συχνοτήτων και με την
εντολή prop.table(table(variable)) ο πίνακας σχετικών συχνοτήτων της μεταβλητής
variable.

Ο πίνακας συνάφειας διπλής εισόδου για τις συχνότητες και τις σχετικές συχνότητες
κάθε κελιού από 2 ποιοτικές μεταβλητές δίνεται από την εντολή
table(variable1,variable2) και prop.table(table(variable1,variable2)) αντίστοιχα.

Η εντολή margin.table(table(variable1,variable2),1) επιστρέφει τις περιθώριες


συχνότητες της πρώτης μεταβλητής, ενώ η εντολή

45
Εισαγωγή στη Γλώσσα Προγραμματισμού R

margin.table(table(variable1,variable2),1) επιστρέφει τις περιθώριες συχνότητες της


δεύτερης μεταβλητής.

Η εντολή addmargins(table(variable1,variable2)) επιστρέφει τον πίνακα


συχνοτήτων μαζί με τις περιθώριες συχνότητες.

Η εντολή prop.table(table(variable1,variable2),1) επιστρέφει τον πίνακα σχετικών


συχνοτήτων γραμμών και η εντολή prop.table(table(variable1,variable2),2)
επιστρέφει τον πίνακα σχετικών συχνοτήτων στηλών. Οι πίνακες αυτοί μας δίνουν τις
δεσμευμένες πιθανότητες.

Στην περίπτωση πολυδιάστατων πινάκων υπάρχει η εντολή ftable η οποία εκτυπώνει


τα αποτελέσματα περισσότερο εμφανίσιμα από την εντολή table.

16. Κατανομές και Προσομοίωση στην R


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

• r: Γεννήτρια τυχαίων αριθμών


• p: Επιστρέφει την συνάρτηση κατανομής
• d: Επιστρέφει την συνάρτηση πυκνότητας πιθανότητας
• q: Επιστρέφει την αντίστροφη συνάρτηση κατανομής (συνάρτηση
ποσοστημορίων)

Αυτά λοιπόν ήταν τα προθέματα τα οποία τοποθετούμε μπροστά από τις παρακάτω
κατανομές:

Πίνακας 16.1: Κατανομές Πιθανοτήτων στην R

Κατανομή Συνάρτηση Ορίσματα

Εκθετική exp rate

Γάμμα gamma shape, scale

Διωνυμική binom size, prob

46
Εισαγωγή στη Γλώσσα Προγραμματισμού R

Κανονική norm mean, sd

Γεωμετρική geom prob

Υπεργεωμετρική hyper m, n, k

Αρνητική Διωνυμική nbinom size, prob

Βήτα beta shape1, shape2, ncp

Poisson pois lambda

Cauchy cauchy location, scale

Λογαριθμοκανονική lnorm meanlog, sdlog

Λογιστική logis location, scale

Ομοιόμορφη unif df, ncp

Weibull weibull shape, scale

Wilcoxon wilcox m,n

Student t df, ncp

Chi Square chisq df, ncp

F f df1, df2, ncp

Επίσης με την εντολή sample(x, n, replace) επιλέγουμε τυχαία n τιμές, με (replace =


TRUE) ή χωρίς επανάθεση (replace=FALSE) από το αντικείμενο x. Ουσιαστικά η
διαδικασία αυτή εφαρμόζει απλή τυχαία δειγματοληψία.

47
Εισαγωγή στη Γλώσσα Προγραμματισμού R

16.1. Εφαρμογές

1. Επιλέξτε 100 τυχαίους αριθμούς από το 1 έως το 10

> runif(100,min=1,max=10)

2. Κατα μέσο όρο συμβαίνουν 5 ατυχήματα ημερησίως στην Εθνική Οδό Αθηνών -
Λαμίας. Να υπολογιστεί η πιθανότητα να συμβούν λιγότερα από 2 ατυχήματα

> pexp(2, rate=1/5)

3. Έστω ότι θέλουμε να βρούμε το 40% ποσοστίαιο σημείο της Εκθετικής κατανομής
με παράμετρο λ = 1/5 . Δηλαδή ψαχνουμε το x εκείνο για το οποίο P(X<=x) = 0.40

> qexp(0.4, 1/5)

Αν θέλαμε το x εκείνο για το οποίο P(X>x) = 0.40

> qexp(0.4, 1/5, lower.tail = FALSE)

4. Μια κλινική διαθέτει 10 κρεβάτια ημερησίως για έκτακτα περιστατικά. Ποια είναι η
πιθανότητα κάποια ημέρα να εμφανιστούν ακριβώς 10 έκτακτα περιστατικά και ποια η
πιθανότητα περισσότερα από 20 έκτακτα περιστατικά.

> dpois(x=10, lambda = 10)

> ppois(20, lambda = 10, lower.tail = FALSE)

5. Έστω ότι τα επίπεδα της χοληστερόλης ενός πληθυσμού ακολουθούν την κανονική
κατανομή με μέσο 210 mg/1dl και τυπική απόκλιση 30mg/1dl. Ποια είναι η πιθανότητα
ένα άτομο που επιλέγεται τυχαία από τον πληθυσμό αυτόν να έχει επίπεδο
χοληστερόλης μικρότερο από 150mg/1dl.

> pnorm(150, mean=210, sd=30)

6. Τιμή της σ.π.π της κατανομής Student με 5 βαθμούς ελευθερίας στο σημείο 3

> dt(3,5)

48
Εισαγωγή στη Γλώσσα Προγραμματισμού R

17. Βασικά Διαγράμματα στην R

18. Διαχείριση δεδομένων με τα πακέτα dplyr & tidyr

19. Οπτικοποίηση δεδομένων με το πακέτο ggplot2

20. Εισαγωγή στο R Markdown

21. Στατιστική ανάλυση και οπτικοποίηση πολυμεταβλητών δεδομένων

22. Κατανομές Πιθανοτήτων

23. Αρχές Εκτιμητικής Θεωρίας

24. Έλεγχος Στατιστικών Υποθέσεων: Βασικές Παραμετρικές και μη


Παραμετρικές Μέθοδοι

25. Ανάλυση Κατηγορικών Δεδομένων

26. Μονοπαραγοντική Ανάλυση Διακύμανσης και Συνδιακύμανσης (One -


way ANOVA / ANCOVA)

27. Ανάλυση Διακύμανσης για επαναλαμβανόμενες μετρήσεις

28. Διπαραγοντική Ανάλυση Διακύμανσης (Two – way ANOVA)

29. Πολυπαραγοντική Ανάλυση Διακύμανσης και Συνδιακύμανσης


(MANOVA / MANCOVA)

30. Ανάλυση συσχέτισης και μερικής συσχέτισης

31. Ανάλυση Γραμμικής Παλινδρόμησης

32. Ιεραρχική Παλινδρόμηση και επιλογή βέλτιστου μοντέλου

33. Παλινδρόμηση Lasso & Ridge

34. Πολυωνυμική Παλινδρόμηση

35. Παλινδρόμηση Poisson

36. Ανάλυση Επιβίωσης (Μοντέλο Παλινδρόμησης Cox)

37. Λογιστική Παλινδρόμηση

49
Εισαγωγή στη Γλώσσα Προγραμματισμού R

38. Εισαγωγή στην Μηχανική Μάθηση


Συγκεκριμένα, θα αναφερθούμε στις Επιβλεπόμενες και μη Επιβλεπόμενες Μεθόδους Ανάλυσης
(Παλινδρόμηση - Ταξινόμηση - Ομαδοποίηση), στις Μεθόδους Μείωσης της Διαστασιμότητας, στις
Μετρικές Αξιολόγησης των παραπάνω μεθόδων και στην Ενισχυτική Μάθηση.

39. Βαθιά Μηχανική Μάθηση

40. Εφαρμογές στην Βιοστατιστική

Για Δωρεάν Βιντεομαθήματα και επιπλέον Σημειώσεις Επικοινωνήστε

μαζί μας.

Εφαρμογές της Στατιστικής Θεωρίας και της Μηχανικής Μάθησης σε

πραγματικά δεδομένα!

Άμεση σύνδεση με την αγορά εργασίας!

50
Εισαγωγή στη Γλώσσα Προγραμματισμού R

ΞΕΝΟΓΛΩΣΣΕΣ ΒΙΒΛΙΟΓΡΑΦΙΚΕΣ ΑΝΑΦΟΡΕΣ

Chang W. (2013). R Graphics Cookbook. USA: O’Reilly Media Inc.

Hothorn, T. & Everitt B. (2010). A handbook of statistical analyses using R, 2nd Edition.
USA: Chapman & Hall/CRC

Kabacoff, R. (2015). R in Action, 2nd Edition. New York: Manning Publications

Matloff, N. (2011).The Art of R Programming. USA: No Starch Press Inc.

Michael J. Crawley (2013). The R Book, 2nd Edition. USA: John Wiley & Sons Inc.

Murrell, P. (2006). R Graphics. USA: Chapman & Hall/CRC.

Spector, P. (2008). Data Manipulation with R. New York: Springer

Verzani, J. (2005). Using R for introductory statistics. USA: Chapman & Hall/CRC

Verzani, J. (2011). Getting Started with RStudio. USA: O’Reilly Media Inc.

51

You might also like