Συναρτήσεις στην γλώσσα R: λίστα με τις πιο χρήσιμες
Σχεδόν τα πάντα στην γλώσσα R γίνονται μέσω συναρτήσεων. Είναι σημαντικό να κατανοηθεί ότι στην γλώσσα R οι συναρτήσεις είναι και οι ίδιες αντικείμενα. Μπορούμε να εργαστούμε μαζί τους, με τον ίδιο ακριβώς τρόπο που εργαζόμαστε με οποιοδήποτε άλλο είδος αντικειμένου.
Εδώ αναφέρονται ελάχιστες αλλά αρκετά χρήσιμες:
ls | παρουσιάζει τα περιεχόμενα του R workspace |
rm | διαγράφει αντικείμενα από το R workspace |
save | αποθήκευση επιλεγμένων αντικειμένων |
+, -, *, /, ^ | αριθμητικοί τελεστές |
%*% | matrix πολλαπλασιασμός |
t | matrix μεταθέσεις |
solve | matrix αντιστροφή (και επίλυση γραμμικών εξισώσεων) |
c | συνδιασμός (σύνδεση) αντικειμένων, ευκολότερα με χρήση vectors |
seq | δημιουργία vectors με κανονική συνέχεια |
rep | αναπαραγωγή vectors |
length | επιστρέφει το μέγεθος ενός vector |
sum | επιστρέφει το συνολικό άθροισμα |
mean | επιστρέφει το μέσον |
median | επιστρέφει το ενδιάμεσο |
sd | επιστρέφει την τυπική απόκληση (N-1 στον παρανομαστή) |
min | επιστρέφει το ελάχιστο |
max | επιστρέφει το μέγιστο |
sort | ταξινόμηση σε έναν vector (τα στοιχεία του vector σε σειρά) |
order | επιστρέφει δείκτες σε vectors προς διάταξη |
rank | επιστρέφει την θέση των στοιχείων σε ένα vector |
==, <, >, <= ,>=, != | τελεστές σύγκρισης |
|, &, OR, AND | λογικοί τελεστές |
is.na | έλεγχος για ελλειπούσες τιμές - NA |
which | κάνει λογική σύγκριση και δείχνει ποια στοιχεία είναι αληθή, δηλαδή, δίνει τους TRUE δείκτες ενός αντικειμένου |
any | λογική σύγκριση, επιστρέφει 1 ( TRUE) αν κάποια από τις συγκρίσεις είναι ΑΛΗΘΕΣ δηλαδή, σε ένα δεδομένο σύνολο λογικών vectors, είναι τουλάχιστον μία από τις τιμές ΤRUE; |
exp | επιστρέφει το e σε μια δύναμη |
log | επιστρέφει τον φυσικό λογάριθμο (με βάση το e) |
sqrt | επιστρέφει την τετραγωνική ρίζα |
table | συχνότητες και crosstabs |
help | βοήθεια σε μια συγκεκριμένη συνάρτηση |
cbind | συνδύασε σε στήλες |
rbind | συνδύασε σε γραμμές |
matrix | δημιουργία matrix |
vector | δημιουργία vector |
is.vector | έλεγχος TRUE ή FALSE αν το αντικείμενο είναι vector |
as.vector | προσπάθεια να ανάγει ένα αντικείμενο σε vector |
array | δημιουργία πίνακα στοιχείων |
dim | διάσταση ενός πίνακα ή dataframe |
nrow | σύνολο γραμμών σε έναν πίνακα ή dataframe |
ncol | σύνολο στηλών σε έναν πίνακα ή dataframe |
read.table | ανάγνωση δεδομένων από text file |
read.csv | ανάγνωση δεδομένων από text file διαχωρισμένα με κόμα |
write.table | εγγραφή ενός dataframe σε ένα text file |
is.data.frame | έλεγχος αντικειμένου αν είναι dataframe |
as.data.frame | προσπάθεια αναγωγής αντικειμένου σε dataframe |
is.factor | έλεγχος αντικειμένου αν είναι factor |
as.factor | προσπάθεια αναγωγής αντικειμένου σε factor |
attach | αναφορά σε μεταβλητών ενός dataframe χωρίς χρήση του ονόματος του dataframe name (το αντίθετο του detach) |
head | παρουσίαση των πρώτων 6 γραμμών |
tail | παρουσίαση των τελευταίων 6 γραμμών |
names | επιστροφή των ονομάτων των στοιχείων ενός αντικειμένου |
colnames | επιστρέφει ή ορίζει ονόματα στηλών ενός αντικειμένου |
rownames | επιστρέφει ή ορίζει ονόματα γραμμών ενός αντικειμένου |
subset | επιλέγει τμήμα ενός vector, matrix, ή dataframe |
merge | ενώνει δύο dataframes |
lm | πολλαπλή γραμμική παλινδρόμηση |
glm | γενικευμένη γραμμική παλινδρόμηση |
anova | ανάλυση διακύμανσης |
chisq.test | Pearson's Chi-squared τέστ για Count Data |
summary | παρουσιάζει τα αποτελέσματα διαφόρων fitting functions |
predict | πρόβλεψη αποτελεσμάτων ενός μοντέλου |
hist | ιστόγραμμα |
boxplot | box plot |
plot | scatter plot |
lines | συνδέει τα σημεία διαδοχικά με γραμμές (σε ένα plot) |
segments | προσθέτει γραμμές σε ένα plot (μεταξύ των ζευγαριών των σημείων) |
text | προσθήκη κειμένου σε ένα plot |
legend | προσθήκη λεζάντας σε ένα plot |
abline | προσθήκη γραμμής σε ένα plot, καθορίζοντας κλίση και σημείο τομής. Αν γίνει σε αντικείμενο lm θα έχει ως αποτέλεσμα την προσθήκη της προβλεπόμενης γραμμής στο plot |
x11 | άνοιγμα ενός επιπλέον γραφικού παραθύρου |
άνοιγμα ενός pdf αρχείου για την εγγραφή των γραφικών στοιχείων | |
dev.off | κλείσιμο συσκευής γραφικών |
par(mfrow) | τακτοποίηση πολλαπλών plots στην ίδια σελίδα |
sample | παράγει ένα τυχαίο δείγμα από τις καθορισμένες τιμές |
set.seed | θέτει το seed για τo επόμενo τυχαίο δείγμα - το ίδιο δείγμα θα παραχθεί με το seed |
rnorm | παράγει ένα τυχαίο δείγμα από μία κανονική κατανομή |
qnorm | ποσοστιαία (εκατοστημόρια) της κανονικής κατανομής |
pnorm | CDF της κανονικής κατανομής |
dnorm | PDF της κανονικής κατανομής |
rbinom | παράγει ένα τυχαίο δείγμα από μια διωνυμική κατανομή |
Δημιουργία συναρτήσεων
Ένα από τα μεγάλα πλεονεκτήματα της R είναι η δυνατότητα του χρήστη να προσθέσει / να δημιουργήσει νέες συναρτήσεις. Στην πραγματικότητα, πολλές από τις συναρτήσεις στην R είναι.. συναρτήσεις των συναρτήσεων (συναρτήσεις φτιαγμένες από άλλες συναρτήσεις).
Η σύνταξη είναι ως εξής:
myfunction <- function(arg1, arg2, ... ){ statements return(object) }
Τα αντικείμενα σε μια συνάρτηση έχουν τοπική ισχύ στη συνάρτηση αυτή. Το αντικείμενο επιστροφής μπορεί να είναι οποιουδήποτε τύπου δεδομένων.
Μία από τις πτυχές του R workframe που κάνει αυτό το “πακέτο” διαφορετικό από τα άλλα στατιστικά πακέτα είναι ότι βασίζεται στην γλώσσα προγραμματισμού S. Με άλλα λόγια, έχουμε μια ολόκληρη γλώσσα υπολογιστή στη διάθεσή μας όταν προγραμματίζουμε στην R που μας επιτρέπει εύκολα και κομψά να γράψουμε όποια συνάρτηση θέλουμε.
Εδώ είναι ένα παράδειγμα:
# function ΠΑΡΑΔΕΙΓΜΑ - μέτρα κεντρικής τάσης # και spread για έναν αριθμητικό vector x. Ο χρήστης έχει # επιλογή των μέτρων και κατά πόσο τα αποτελέσματα εκτυπώνονται mysummary <- function(x,npar=TRUE,print=TRUE) { if (!npar) { center <- mean(x); spread <- sd(x) } else { center <- median(x); spread <- mad(x) } if (print & !npar) { cat("Mean=", center, "\n", "SD=", spread, "\n") } else if (print & npar) { cat("Median=", center, "\n", "MAD=", spread, "\n") } result <- list(center=center,spread=spread) return(result) } # χρήση της συνάρτησης set.seed(1234) x <- rpois(500, 4) y <- mysummary(x) Median= 4 MAD= 1.4826 # y$center είναι το μέσο (4) # y$spread είναι το μέσο της απόλυτης απόκλισης (1.4826) y <- mysummary(x, npar=FALSE, print=FALSE) # καμία έξοδος # y$center είναι το μέσο (4.052) # y$spread είναι το μέσο της τυπικής απόκλισης (2.01927)