Τρέξτε τη παρακάτω συνάρτηση, βάζοντας σαν παράμετρο τον αριθμό μητρώου σας:
get.askhseis <- function(AM) {
if_else <- c(1:10)
for_while <- c(11:23)
if_else_for_while <- c(if_else, for_while)
vectors <- c(24:39)
lists <- c(40:56)
matrices <- c(57:72)
vectors_lists_matrices <- c(vectors, lists, matrices)
data_frames <- c(73:88)
plots <- c(89:100)
data_frames_plots <- c(data_frames, plots)
set.seed(AM)
askhseis <- c()
askhseis <- c(askhseis, sample(if_else, 1))
askhseis <- c(askhseis, sample(for_while, 1))
askhseis <- c(askhseis, sample(vectors, 1))
askhseis <- c(askhseis, sample(lists, 1))
askhseis <- c(askhseis, sample(matrices, 1))
askhseis <- c(askhseis, sample(data_frames, 1))
askhseis <- c(askhseis, sample(plots, 1))
for (extra in list(if_else_for_while, vectors_lists_matrices, data_frames_plots)) {
while (TRUE) {
n <- sample(extra, 1)
if (! n %in% askhseis) {
break
}
}
askhseis <- c(askhseis, n)
}
askhseis <- sort(askhseis)
return (askhseis)
}
Για παράδειγμα, αν ο αριθμός μητρώου σας είναι 100:
get.askhseis(100)
# Επιστρέφει:
10 , 14 , 17 , 29 , 55 , 59 , 67 , 81 , 95 , 98
Αυτές είναι και οι ασκήσεις που πρέπει να λύσετε.
Σε μία διοργάνωση τέννις, ένα σετ το κερδίζει όταν ένας παίκτης πάρει 6 games. Αν το σκορ φτάσει 5-5 τότε το όριο αυτό φτάνει τα 7 games. Αν όμως το σκορ φτάσει 6-6 τότε ακολουθεί ένα ιδαίτερο scoring system το οποίο λέγεται tie break. Σε αυτό, με κάθε "μπάλα" που κερδίζει ένας παίκτης παίρνει 1 πόντο (σε αντίθεση με το σύστημα 0-15-30-40 που ισχύει στα υπόλοιπα games). Όταν ένας από τους δύο παίκτες φτάσει τους 7 πόντους, αν ο δεύτερος έχει 5 πόντους ή λιγότερους, τότε λήγει το σετ και το κερδίζει ο παίκτης με τους 7 πόντους. Αν όμως ο δεύτερος παίκτης έχει 6 πόντους τότε το παιχνίδι συνεχίζεται μέχρι η διαφορά των πόντων να γίνει 2.
Γράψτε μία συνάρτηση η οποία θα παίρνει 2 παραμέτρους: τις player_1
και player_2
οι οποίοι θα περιέχουν τους πόντους του πρώτου και του δεύτερου παίκτη αντίστοιχα. Η συνάρτηση θα υποθέτει ότι βρισκόμαστε σε ένα tie break. Η συνάρτηση θα επιστρέφει "1st player wins"
ή "2nd player wins"
ή "game goes on"
ή "impossible"
ανάλογα με τις τιμές των μεταβλητών player_1
και player_2
. Δείτε τα παραδείγματα:
player_1=1
player_2=4
f(player_1, player_2) # Epistrefei: "game goes on"
player_1=7
player_2=2
f(player_1, player_2) # Epistrefei: "1st player wins"
player_1=6
player_2=7
f(player_1, player_2) # Epistrefei: "game goes on"
player_1=6
player_2=8
f(player_1, player_2) # Epistrefei: "2nd player wins"
player_1 = 3
player_2 = 8
f(player_1, player_2) # Epistrefei: "impossible"
player_1 = 8
player_2 = 11
f(player_1, player_2) # Epistrefei: "impossible"
player_1 = 23
player_2 = 24
f(player_1, player_2) # Epistrefei: "game goes on"
Σε ένα φορολογικό σύστημα ισχύει το εξής:
- Τα πρώτα 10.000 ευρώ δεν φορολογούνται
- Τα υπόλοιπα και μέχρι και τα 20.000 ευρώ φορολογούνται με φόρο 15%
- Τα υπόλοιπα και μέχρι και τα 40.000 ευρώ φορολογούνται με φόρο 20%
- Τα υπόλοιπα και μέχρι και τα 60.000 ευρώ φορολογούνται με φόρο 30%
- Τα υπόλοιπα (>60.000 ευρώ) φορολογούνται με φόρο 40%
Γράψτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο τη μεταλητή income η οποία θα αναπαριστάει το εισόδημα ενός φορολογούμενου. Συνάρτηση θα επιτρέφει τη φορολογία που αναλογεί στον φορολογούμενο.
Παραδείγματα:
f(5000) # Epistrefei: 0
f(15000) # Epistrefei: 750.0
f(30000) # Epistrefei: 3500.0
f(50000) # Epistrefei: 8500.0
f(70000) # Epistrefei: 15500.0
Έστω η ένα διάνυσμα το οποίο περιέχει τρεις ακέραιες τιμές. Η πρώτη έχει το όνομα hours και περιέχει ώρες, η δεύτερη έχει το όνομα minutes και περιέχει λεπτά και η τρίτη έχει το όνομα seconds και περιέχει δευτερόλεπτα. Π.χ:
t <- c(hours=15, minutes=45, seconds=51)
Φτιάξτε μία συνάρτηση με το όνομο convert.to.seconds
η οποία θα παίρνει ως παράμετρο ένα διάνυσμα όπως περιγράφεται πιο πάνω και θα επιστρέφει το χρονικό διάστημα που περιέχει σε δευτερόλεπτα. Για το παράδειγμα που δόθηκε, το χρονικά διάστημα του t
σε δευτερόλεπτα είναι 56751.
Γράψτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο τη μεταβλητή days
η οποία θα περιέχει έναν αριθμό από μέρες. Η συνάρτηση θα επιστρέφει τι μέρα θα είναι μετά από days
μέρες, αν υποθέσουμε ότι σήμερα είναι Δευτέρα.
Για παράδειγμα:
f(1) # Epistrefei: "Trith"
f(3) # Epistrefei: "Pempth"
f(7) # Epistrefei: "Deutera"
f(1000) # Epistrefei: "Kuriakh"
Φτιάξτε μία συνάρτηση η οποία θα παίρνει 2 παραμέτρους a
,b
οι οποίοι θα είναι αριθμοί. Η συνάρτηση θα πρέπει να λύνει την εξίσωση: ax+b=0
με τον εξής τρόπο:
- Αν το a είναι 0:
- Αν το b είναι 0 επιστρέφει:
"TAYTOTHTA"
- Αν το b δεν είναι 0 επιστρέφει:
"ADYNATH"
- Αν το b είναι 0 επιστρέφει:
- Α το a δεν είναι 0: Επιστρέφει
-b/a
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως είσοδο ένα αλφαριθμητικό το οποίο θα είναι μία ακολουθία νουκλεοτιδίων. Π.χ. μία πιθανή κλήση της συνάρτηση είναι με την τιμή: 'AAACGTTCGGAA'
. Η συνάρτηση θα πρέπει να επιστρέφει TRUE
αν η ακολουθία ΔΕΝ περιέχει άλλο γράμμα πέρα από τα 'A'
, 'C'
, 'G'
, 'T'
. Για παράδειγμα αν η είσοδος είναι 'ACCGGFT'
, τότε επιστρέφει FALSE
. Αν η ακολουθία είναι η 'ACCCAA'
, τότε επιστρέφει TRUE
. Αν η ακολουθία είναι κενή τότε πρέπει να επιστρέφει FALSE
.
Δίνεται ότι η συνάρτηση grepl(a,b)
επιστρέφει TRUE
αν το αλφαριθμητικό a
υπάρχει στο b
, αλλιώς επιστρέφει FALSE
Γράψτε μία συνάρτηση η οποία θα παίρνει δύο ακέραιους ως παράμετρους. Ο πρώτος μπορεί να πάρει τιμές από το 1 μέχρι το 31 και αναπαριστά τη μέρα του μήνα. Ο δεύτερος μπορεί να πάρει τιμές από 1 μέχρι το 12 και αναπαριστά τον μήνα του χρόνου (1=Ιανουάριος, 2=Φεβρουάριους, ... 12=Δεκέμβριους). Η συνάρτηση θα πρέπει να επιστρέφει TRUE
, αν είναι δυνατός αυτός ο συνδοιασμός (μέρα, μήνα), διαφορετικά θα επιστρέφει FALSE
. Σημείωση: υποθέτουμε ότι το έτος ΔΕΝ είναι δίσεκτο. Παραδείγματα:
f(31,1) # (31 January) Epistrefei TRUE
f(29,2) # (29 February) Epistrefei FALSE
f(32,3) # (32 March) Epistrefei FALSE
f(31,4) # (31 April) Epistrefei FALSE
f(31,5) # (31 May) Epistrefei TRUE
Γράψτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο δύο αριθμούς x και y. Το πρόγραμμα θα επιστρέφει σε πιο τεταρτημόριο του καρτεσιανού διδιάστατου χώρου βρίσκεται το σημείο που ορίζεται από αυτούς τους δύο αριθμούς. Αν το σημείο "πέφτει" πάνω σε κάποιον άξονα ή στο κέντρο των αξόνων (σημείο 0,0) θα επιτρέφει ένα ανάλογο αλφαριθμητικό. Θεωρούμε ότι το κέντρο του χώρου είναι το 0,0. Για παράδειγμα:
f(3,4) # Epistrefei "1o tetarthmorio"
f(-2,7) # Epistrefei "2o tetarthmorio"
f(-5,-2) # Epistrefei "3o tetarthmorio"
f(4,-3) # Epistrefei "4o tetarthmorio"
f(0,0) # Epistrefei "kentro"
f(0,1) # Epistrefei "axonas Y"
f(3,0) # Epistrefei "axonas X"
Για τη μετατροπή από Fahrenheit σε Celsius χρησιμοποιείται η παρακάτω φόρμουλα: C = (F − 32) * (5/9)
Για τη μετατροπή από Celsius σε Kelvin χρησιμοποιείται η παρακάτω φόρμουλα: K = C + 273.15
Φτιάξτε μία συνάρτηση F_to_C
η οποία θα δέχεται μία θερμοκρασία σε Fahrenheit και θα επιστρέφει την αντίστοιχη σε Celsius.
Φτιιάξτε μία συνάρτηση C_to_K
η οποία θα δέχεται μία θερμοκρασία σε Celsius και θα επιστρέφει την αντίστοιχη σε Kelvin.
Φτιάξτε μία συνάρτηση F_to_K
η οποία θα δέχεται μία θερμοκρασία σε Fahrenheit και θα επιστρέφει την αντίστοιχη σε Kelvin. Σε αυτή τη συνάρτηση είναι υποχρεωτικό να χρησιμοποιήσετε τις συναρτήσεις F_to_C
και C_to_K
.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει τρεις παραμέτρους a,b,c. Η συνάρτηση θα επιστρέφει τη λύση της εξίσωσης ax2 + bx + c = 0. Με τον εξής τρόπο:
- Αν το a είναι 0 επιτρέφει: NULL
- Διαφορετικά:
- Υπολογίζει τη διακρίνουσα: D = b2-4ac
- Αν η διακρίνουσα είναι αρνητική, η συνάρτηση θα επιστρέφει
NULL
- Αν η διακρίνουσα είναι 0.0 τότε η συνάρτηση θα επιτρέφει τη μία λύση της εξίσωσης δηλαδή: -b/(2a)
- Αν η διακρίνουσα είναι μεγαλύτερη από το 0.0 τότε η συνάρτηση θα επιστρέφει ένα διάνυσμα με τις δύο λύσεις της εξίσωσης. Δηλαδή:
(-b+sqrt(D))/(2*a)
και(-b-sqrt(D))/(2*a)
Η συνάρτηση sqrt(x)
υπολογίζει τη τετραγωνική ρίζα του x.
Αν αθροίσουμε όλους τους αριθμούς που διαιρούνται με το 9 αλλά δεν διαιρούνται με το 5, σε ποιον αριθμό το άθροισμα αυτό θα ξεπεράσει το 2000;
Ποιο είναι το άθροισμα όλων των αριθμών που διαιρούνται με 9 αλλά δεν διαιρούνται με 5 από το 1000 μέχρι και το 2000;
Το παραγοντικό ενός αριθμούς το υπολογίζουμε με τη συνάρτηση της R factorial(N)
. Βρείτε και τυπώστε όλους τους ακέραιους αριθμούς Α
,Β
,Γ
οι οποίοι είναι μεγαλύτεροι από το 1 (μην παρετε το 1) και μικρότεροι από το 100 για τους οποίους ισχύει:
Α! = Β! * Γ!
Το παραγοντικό ενός αριθμού Ν
συμβολίζεται με N!
και είναι το γινόμενο: 1*2*3*...*Ν
Γράψτε κώδικα ο οποίoς να τυπώνει το παρακάτω:
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9
4 5 6 7 8 9
5 6 7 8 9
6 7 8 9
7 8 9
8 9
9
ΠΡΟΣΟΧΗ! χρησιμοποιήστε for ή while. Μην κάνετε κάτι τέτοιο:
print ("1 2 3 4 5 6 7 8 9")
print ("2 3 4 5 6 7 8 9")
print ("3 4 5 6 7 8 9")
print ("4 5 6 7 8 9")
print ("5 6 7 8 9")
print ("6 7 8 9")
print ("7 8 9")
print ("8 9")
print ("9")
Γράψτε κώδικα ο οποίoς να τυπώνει το παρακάτω:
9 9 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8
7 7 7 7 7 7 7
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
ΠΡΟΣΟΧΗ! χρησιμοποιήστε for ή while. Μην κάνετε κάτι τέτοιο:
print ('9 9 9 9 9 9 9 9 9')
print ('8 8 8 8 8 8 8 8')
print ('7 7 7 7 7 7 7')
print ('6 6 6 6 6 6')
print ('5 5 5 5 5')
print ('4 4 4 4')
print ('3 3 3')
print ('2 2')
print ('1')
Αν αρχίσουμε να αθροίζουμε τις τετραγωνικές ρίζες όλων των αριθμών ξεκινώντας από το 1, σε ποιον αριθμό το άθροισμα αυτό θα ξεπεράσει το 1000;
Υπολογίστε το άθροισμα:
Πρόκειτα για το άθροισμα της τιμής: ((-1)n)/(2n+1) , για όλες τις τιμές του n από το 0 μέχρι και το 100.
Φτιάξτε τη συνάρτηση με το όνομα f
η οποία παίρνει ως παράμετρο 2 αριθμούς: i
,j
. Η συνάρτηση θα πρέπει να επιστρέφει: (i+j)/(i*j)
Φτιάξτε τη συνάρτηση με το όνομα g
η οποία θα παίρνει ως παράμετρο 1 ακέραιο θετικό αριθμό N
μικρότερο ή ίσο με το 100. Η συνάρτηση θα επιστρέφει το άθροισμα: f(1,1) + f(1,2) + f(1,3) + ... + f(1,Ν)
Υπολογίστε το άθροισμα: g(1) + g(2) + ... + g(100)
Από όλα τα ζευγάρια ακέραιων αριθμών α,β όπου 0<=α<=100 και 0<=β<=100 ποιοι είναι αυτοί για τους οποίους ισχύει:
(α+β)^2 = α*10 + β
Γράψτε κώδικα σε R που να απαντάει σε αυτό το ερώτημα με επαναληπτικό τρόπο. Δηλαδή να δοκιμάζει όλες τις πιθανές τιμές των α και β.
Αν μία μπάλα χάνει το 7% του ύψους της κάθε φορά που αναπηδάει και την αφήσουμε να πέσει από το 1 μέτρο, μετά από πόσες αναπηδήσεις θα έχει φτάσει σε ύψος κάτω από το μισό μέτρο; Φτάξτε κώδικα R που απαντάει σε αυτό το ερώτημα με επαναληπτικό τρόπο.
Γράψτε κώδικα σε R ο οποίο θα τυπώνει τα x και τα y με όλες τις λύσεις της εξίσωσης: x^2 = y! + 1
για 1<=x<=20 και 1<=y<=20. Όπου x και y είναι ακέραιοι.
Το y! είναι το παραγοντικό και υπολογίζεται με: factorial(y).
Το παραγοντικό ενός αριθμού Ν
είναι το γινόμενο: 1*2*3*...*Ν
Για ποια τιμή του x από το -1 μέχρι και το 3 η συνάρτηση:
f(x) = 2*ημ(x) - x + 3
παίρνει το μέγιστό της; Πάρτε όλες τις τιμές του x από το -1 μέχρι το 3 με βήμα 0.01.
Δίνεται ότι το ημίτονο είναι το sin(x).
hint:
seq(0, 1, by=0.01) # επιστρέφει ένα διάνυσμα από 0 μέχρι και 1 με βήμα 0.01
Έστω η συνάρτηση:
f(x)=x5-3x4+7x2-4x-3
Για ποια τιμή του x από το 0 μέχρι και το 2 με βήμα 0.01 είναι πιο κοντά στο 0 η f(x) ;
hint:
seq(0, 1, by=0.01) # επιστρέφει ένα διάνυσμα από 0 μέχρι και 1 με βήμα 0.01
Φτιάξτε μά συνάρτηση που θα παίρνει ως παράμετρο δύο διανύσματα A και B. Η συνάρτηση θα επιστρέφει ένα νέο διάνυσμα το οποίο θα περιέχει τα στοιχεία που υπάρχουν στο A ή στο B αλλά δεν υπάρχουν και στο A και στο B. Για παράδειγμα:
A <- c(1,2,3,4,5,6)
B <- c(3,4,5,6,7,8,9,10)
f(A,B) # Επιστρέφει το διάνυσμα: 1,2,7,8,9,10
Γράψτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα από ακέραιους αριθμούς όπου κάθε αρθμός είναι από το 1 μέχρι το 100. Η συνάρτηση θα πρέπει να επιστρέφει τον μεγαλύτερο αριθμό από το 1 μέχρι το 100 που ΔΕΝ υπάρχει στο διάνυσμα. Αν δεν υπάρχει τέτοιος αριθμός επιτρέφει 0.
Για παράδειγμα:
a <- c(1,5,1,98,99,100)
f(a) # Επιστρέφει 97. Το 97 είναι ο μεγαλύτερος αριθμός από το 1 μέχρι το 100 που δεν υπάρχει στο a
f(c(1:100)) # Επιστρέφει 0
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα από ακέραιους και θα επιστρέφει το 2ο μικρότερο στοιχείο. Αν υπάρχουν 2 ή παραπάνω στοιχεία που είναι ίσα με το μικρότερο, τότε δεν θα πρέπει να επιστρέφει κάποιο από αυτά, αλλά το αμέσως μικρότερο. Για παράδειγμα:
a<-c(4,3,2,5)
f(a) # Επιστρέφει 3
a<-c(2,2,4,3)
f(a) # Επιστρέφει 3
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα από ακέραιους και θα επιστρέφει το 2ο μεγαλύτερο στοιχείο. Αν υπάρχουν 2 ή παραπάνω στοιχεία που είναι ίσα με το μεγαλύτερο, τότε θα επιστρέφει ένα οποιοδήποτε από αυτά. Για παράδειγμα:
a<-c(4,3,2,5)
f(a) # Επιστρέφει 4
a<-c(5,5,4,3)
f(a) # Επιστρέφει 5
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα από ακέραιους. Η συνάρτηση θα επιτρέφει τον μεγαλύτερο μονό αριθμό που περιέχει.
Για παράδειγμα:
a <- c(4,3,5,6)
f(a) # Επιστρέφει 5
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα από ακέραιους και θα επιστρέφει:
- TRUE : Αν το πλήθος το θετικών είναι μεγαλύτερο ή ίσο από το πλήθος των αρνητικών τιμών του διανύσματος
- FALSE : Αν το πλήθος των θετικών είναι μικρότερο από το πλήθος από των αρνητικών τιμών του διανύσματος
σημείωση: Θεωρήστε ότι το 0 είναι θετικός αριθμός.
Για παράδειγμα:
a <- c(2,-1,2,-3-4)
f(a) # Επιστρέφει FALSE
a <- c(2,-1,2,-3-4,6,5)
f(a) # Επιστρέφει TRUE
a <- c(0,1,-1,-2)
f(a) # Επιστρέφει TRUE
Έστω δύο διανύσματα A και B με αριθμούς και έστω ότι έχουν ίδιο μέγεθος. Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο δύο διανύσματα αυτού του είδους. Η συνάρτηση θα επιστρέφει ένα νέο διάνυσμα το οποίο θα περιέχει τα στοιχεία του A που είναι μεγαλύτερα από τα στοιχεία του B (αν τα συγκρίνουμε στοιχείο προς στοιχείο).
Για παράδειγμα:
a <- c(9,3,5,6,5)
b <- c(3,6,8,1,4)
f(a,b) # Επιστρέφει: c(9,6,5)
# Εξήγηση: Έχουμε τα εξής ζευγάρια:
# 9,3 --> 9 μεγαλύτερο ΤΟ ΚΡΑΤΑΜΕ
# 3,6 --> 3 μικρότερο
# 5,8 --> 5 μικρότερο
# 6,1 --> 6 μεγαλύτερο ΤΟ ΚΡΑΤΑΜΕ
# 5,4 --> 5 μεγαλύτερο ΤΟ ΚΡΑΤΑΜΕ
Έστω ένα διάνυσμα το οποίο αποτελείται από αλφαριθμητικά. Το κάθε αλφαριθμητικό μπορεί να είναι είτε "kouneli"
είτε "kota"
. Φτιάξτε μία συνάρτηση που θα παίρνει σαν παράμετρο ένα τέτοιο διάνυσμα και θα επιστρέφει το πλήθος από πόδια που έχουν τα ζώα στο διάνυσμα (το kouneli
έχει 4 πόδια και η kota
έχει 2).
Για παράδειγμα:
a <- c('kouneli', 'kouneli', 'kouneli', 'kota')
f(a) # Επιστρέφει 14
a <- c('kota', 'kota', 'kouneli')
f(a) # Επιστρέφει 8
Φτιάξτε μία συνάρτηση που να παίρνει σαν παράμετρο ένα διάνυσμα από ακέραιους αριθμούς. Η συνάρτηση θα πρέπει να:
- Επιτρέφει TRUE αν το πλήθος των μονών στοιχείων που έχει το διάνυσμα είναι μονός
- Επιτρέφει FALSE αν το πλήθος των μονών στοιχείων που έχει το διάνυσμα είναι άρτιος (ζυγός)
Φτιάξτε 2 διανύσματα a και b με τουλάχιστον 4 ακέραιους αριθμούς (μπορείτε και παραπάνω). Θα πρέπει η παρακάτω πράξη να βγάζει αποτέλεσμα TRUE:
all(b[a<b] == a[a>b])
Δίνεται ότι η συνάρτηση all(x)
επιτρέφει TRUE
αν όλα τα στοιχεία του διανύσματος x
είναι TRUE
. Διαφορετικα (αν έστω και ένα στοιχείο του x
είναι FALSE
), επιστρέφει FALSE
.
Έστω δύο διανύσματα ages
και weights
. Το πρώτο περιέχει τις ηλικίες ενός συνόλου ανθρώπων και το δεύτερο έχει το βάρος τους. Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρους δύο διανύσματα όπως τα ages
και weights
. Η συνάρτηση θα επιστρέφει TRUE
αν υπάρχει τουλάχιστον 1 άνθρωπος που το Body Mass Index του (βάρος/(ύψος2) είναι μεγαλύτερο από 30. Αν δεν υπάρχει κανένας τότε επιστρέφει FALSE
.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο ένα διάνυσμα με αριθμούς. Η συνάρτηση θα επιστρέφει το στοιχείο του διανύσματος το οποίο έχει τη μικρότερη απόλυτη διαφορά με τον μέσο όρο όλων των στοιχείων του διανύσματος. Η απόλυτη διαφορά μεταξύ δύο αριθμών a και b είναι abs(a-b)
. Για παράδειγμα:
a <- c(17,10,5,13,17,13,4,8,1,6)
f(a) # Επιστρέφει το 10
# Εξήγηση:
# Ο μέσος όρος του a είναι 9.4
# Το στοιχείο του a που έχει τη μικρότερη απόλυτη διαφορά με το 9.4 είναι το 10.
Έστω δύο διανύσματα ages
και weights
. Το πρώτο περιέχει τις ηλικίες ενός συνόλου ανθρώπων και το δεύτερο έχει το βάρος τους. Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρους δύο διανύσματα όπως τα ages
και weights
. Η συνάρτηση θα επιστρέφει την ηλικία του ανθρώπου που έχει το μικρότερο βάρος. Για παράδειγμα:
ages <- c(60,40,70,50)
weights <- c(87, 71, 61, 90)
f(ages, weights) # Επιστρέφει 70
# Εξήγηση: Το μικρότερο βάρος (61) το έχει το τρίτο στοιχείο. Η τιμή του τρίτου στοιχείου στο ages είναι 70.
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο ένα διάνυσμα. Η συνάρτηση θα πρέπει να επιστρέφει ένα νέο διάνυσμα όπου το πρώτο στοιχείο θα έχει μπει στο τέλος. Για παράδειγμα:
a <- c(1,2,3,4)
f(a)
# Επιστρέφει το διάνυσμα: 2,3,4,1
Ένα άλλο παράδειγμα:
a <- c("hrakleio", 'larissa', 'athens', 'chania')
f(a)
# Επιστρέφει το διάνυσμα: 'larissa', 'athens', 'chania', 'hrakleio'
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο ένα διάνυσμα a
με ακέραιες τιμές από το 1 μέχρι το 100. Η συνάρτηση θα πρέπει να επιστρέφει ένα διάνυσμα με όλες τις τιμές από το 1 μέχρι το 100 που ΔΕΝ υπάρχουν στο a.
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο ένα διάνυσμα a
με ακέραιους αριθμούς. Η συνάρτηση θα επιστρέφει ένα διάνυσμα με όλες τις τιμές του a
που υπάρχουν παραπάνω από μία φορά μέσα στον a
.
Για παράδειγμα:
a <- c(2,3,1,2,4,1)
f(a) # επιστρέφει: 2,1
Έστω x1 ο αριθμός της γραμμής και y1 ο αριθμός της στήλης ενός στοιχείου σε έναν πίνακα. Έστω x2 ο αριθμός της γραμμής και y2 ο αριθμός της στήλης ενός άλλου στοιχείου στον ίδιο πίνακα.
Φτιάξτε μία συνάρτηση που να παίρνει ως παραμέτρους τους αριθμούς x1, y1, x2, y2 και να επιστρέφει TRUE
/FALSE
ανάλογα μα το αν αυτά τα δύο στοιχεία είναι στην ίδια διαγώνιο.
Παράδειγμα:
0 1 0
0 0 1
0 0 0
x1=1, y1=2, x2=2, y2=3 --> TRUE
0 1 0
1 0 0
0 0 0
x1=1, y1=2, x2=2, y2=1 --> TRUE
0 0 0
0 1 0
0 0 1
x1=2, y1=2, x2=3, y2=3 --> TRUE
1 0 1
0 0 0
0 0 0
x1=1, y1=1, x2=1, y2=3 --> FALSE
1 0 0
0 0 0
0 1 0
x1=1, y1=1, x2=3, y2=2 --> TRUE
Η συνάρτηση θα πρέπει να μην υποθέτει ότι ο πίνακας έχει συγκεκριμμένο πλήθος γραμμών και στηλών.
Hint: Google is your friend
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο έναν πίνακα (matrix). Θα επιστρέφει το άθροισμα όλων των στοιχείων της περιμέτρου του.
Παράδειγμα: Έστω
a =
1 3 5 6
4 2 3 1
5 4 2 1
Επιστρέφει: 1+3+5+6+1+1+2+4+5+4=32
Η συνάρτηση θα πρέπει να μην υποθέτει ότι ο πίνακας έχει συγκεκριμμένο πλήθος γραμμών και στηλών.
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο έναν πίνακα (matrix). Η συνάρτηση θα επιτρέφει τον αριθμό της γραμμής που έχει το μεγαλύτερο άθροισμα. Για παράδειγμα:
Έστω:
a =
1 3 5 6
4 2 3 1
5 4 2 1
Τα αθροίσματα των γραμμών είναι:
1η γραμμή: 1+3+5+6 = 15
2η γραμμή: 4+2+3+1 = 10
3η γραμμή: 5+4+2+1 = 12
Η γραμμή με το μεγαλύτερο άθροισμα είναι η 1η. Άρα θα επιτρέφει: 1
Η συνάρτηση ΔΕΝ θα πρέπει να υποθέτει ότι ο πίνακας έχει συγκεκριμμένο πλήθος γραμμών και στηλών.
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο έναν πίνακα (matrix). Η συνάρτηση θα επιτρέφει το άθροισμα των στοιχείων που ΔΕΝ ανήκουν στη περίμετρό του. Για παράδειγμα:
Έστω:
a =
1 3 5 6
4 2 3 1
5 4 2 1
Τα στοιχεία που ανήκουν στην περίμετρο είναι:
1 3 5 6
4 - - 1
5 4 2 1
Τα στοιχεία που ΔΕΝ ανήκουν στην περίμετρο είναι:
a =
- - - -
- 2 3 -
- - - -
Το άθροισμα των στοιχείων που ΔΕΝ ανήκουν στη περίμετρο είναι: 2+3=5. Άρα η συνάρτηση θα πρέπει να επιστρέφει: 5
Η συνάρτηση ΔΕΝ θα πρέπει να υποθέτει ότι ο πίνακας έχει συγκεκριμμένο πλήθος γραμμών και στηλών.
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο έναν πίνακα (matrix). Η συνάρτηση θα επιτρέφει τον ίδιο πίνακα όπου όμως όλα τα στοιχεία που ΔΕΝ ανήκουν στη διαγώνια θα είναι 0.
Για παράδειγμα:
a =
1 3 5 6
4 2 3 1
5 4 2 1
6 4 3 8
f(a) επιτρέφει:
1 0 0 0
0 2 0 0
0 0 2 0
0 0 0 8
Φτιάξτε μία συνάρτηση που θα παίρνει ως παράμετρο έναν πίνακα (matrix). Ο πίνακας θα έχει μόνο τιμές 0 ή 1. Η συνάρτηση θα επιτρέφει TRUE
ή FALSE
ανάλογα με αν υπάρχει έστω μία γραμμή όπου το πλήθος των στοιχείων της που είναι "1" είναι ζυγός (άρτιος).
Παράδειγμα:
a =
0 1 0 0
1 1 0 1
0 0 1 1
0 0 0 1
Το πλήθος των "1" σε κάθε γραμμή είναι:
a =
0 1 0 0 --> 1 (μονός)
1 1 0 1 --> 3 (μονός)
0 0 1 1 --> 2 (ζυγός)
0 0 0 1 --> 1 (μονός)
Βλέπουμε ότι υπάρχει μία γραμμή όπου το πλήθος από "1" είναι ζυγός αριθμός (η 3η γραμμή). Άρα επιτρέφει TRUE.
Ένα άλλο παράδειγμα:
a =
0 1 0 0 --> 1 (μονός)
1 1 0 1 --> 3 (μονός)
0 0 1 0 --> 1 (μονός)
0 0 0 1 --> 1 (μονός)
Εδώ δεν υπάρχει καμία γραμμή όπου το πλήθος από "1" να είναι ζυγός αριθμός, άρα επιτρέφει FALSE.
Η συνάρτηση ΔΕΝ θα πρέπει να υποθέτει ότι ο πίνακας έχει συγκεκριμμένο πλήθος γραμμών και στηλών.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο έναν αριθμός N>=1. Θα επιστρέφει έναν πίνακα NxN τέτοιο ώστε:
- Όλα τα στοιχεία που ανήκουν στη περίμετρο του πίνακα θα είναι 0
- Όλα τα στοιχεία που ΔΕΝ ανήκουν στη περίμετρο θα είναι N.
Για παράδειγμα:
f(3) # Epistrefei ton pinaka:
0 0 0
0 3 0
0 0 0
f(4) # Epistrefei ton pinaka:
0 0 0 0
0 4 4 0
0 4 4 0
0 0 0 0
f(5) # Epistrefei ton pinaka:
0 0 0 0 0
0 5 5 5 0
0 5 5 5 0
0 5 5 5 0
0 0 0 0 0
Φτιάξτε μία συνάρτηση η οποία θα παίρνει 2 ακέραιους αριθμούς K και L. Θα επιστρέφει έναν πίνακα διαστάσεων K x L, τέτοιο ώστε:
- Στις μονές γραμμές οι μονές στήλες είναι 0 και οι ζυγές στήλες 1.
- Στις ζυγές γραμμές οι ζυγές στήλες είναι 0 και οι μονές στήλες 1.
Για παράδειγμα: f(4,4) επιστρέφει:
0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0
Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν όρισμα έναν πίνακα A. Θα επιτρέφει έναν νεό πίνακα ο οποίος θα περιέχει τον A στις 4 γωνίες του. Δηλαδή ο πίνακας που θα επιστρέφει θα είναι ο:
A A
A A
Για παράδειγμα. Έστω A:
3 5
7 1
Θα επιστρέφει:
3 5 3 5
7 1 7 1
3 5 3 5
7 1 7 1
Ένα άλλο παράδειγμα: Έστω A:
3 5 0
7 1 9
Ο πίνακας που θα επιστρέφει θα είναι:
3 5 0 3 5 0
7 1 9 7 1 9
3 5 0 3 5 0
7 1 9 7 1 9
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο έναν πίνακα A. Η συνάρτηση θα επιστρέφει έναν νέο πίνακα 2Χ2 ο οποίος θα "περιέχει" μόνο τα γωνιακά στοιχεία του πίνακα A.
Για παράδειγμα: Έστω A:
3 8 9 5
7 5 5 1
1 4 9 0
2 6 4 8
Η συνάρτηση θα επιστρέφει τον παρακάτω πίνακα:
3 5
2 8
Δηλαδή έναν πίνακα που περιέχει τα πάνω αριστερά, πάνω δεξιά, κάτω αριστερά και κάτω δεξιά στοιχεία του A.
Φτιάξτε μία συνάρτηση που θα παίρνει σαν όρισμα έναν τετραγωνικό πίνακα. Η συνάρτηση θα επιτρέφει TRUE
/FALSE
ανάλογα με το αν η διαγώνιος (από τα αριστερά προς τα δεξιά) είναι μεγαλύτερη από την αντιδιαγώνιο (από το δεξιά προς τα αριστερά). Για παράδειγμα:
1 4 6
5 4 2
9 8 1
Η κύρια διαγώνιος έχει άθροισμα: 1+4+1 = 6
Η αντιδιαγώνιος έχει άθροισμα: 9+4+6 = 19
Η κύρια διαγώνιος ΔΕΝ είναι μεγαλύτερη από τη διαγώνιο οπότε επιτρέφει: FALSE
Φτιάξτε μία συνάρτηση που θα παίρνει σαν όρισμα 2 πίνακες ίδιων διαστάσεων A και B. Θα επιστρέφει έναν νέο πίνακα ο οποίος θα περιέχει το μεγαλύτερο στοιχείο κάθε θέσης από τους 2 πίνακες. Για παράδειγμα:
Έστω A
1 3 5
5 4 0
8 4 7
Έστω B
3 1 0
4 6 8
2 6 3
Επιστρέφει:
3 3 5
5 6 8
8 6 7
Γράψτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο έναν πίνακα με ακέραιους. Η συνάρτηση θα επιστρέφει έναν νέο πίνακα όπου:
- Στη θέση όπου ο A είχε μονά στοιχεία, ο νέος πίνακα θα έχει τον αριθμό:
-1
- Στη θέση όπου ο A είχε άρτια (ζυγά) στοιχεία, ο νέος πίνακας θα έχει τον αριθμό:
1
.
Για παράδειγμα: Έστω A=
3 6 4 8
4 6 9 1
3 5 6 1
3 4 2 6
Τότε η συνάρτησή σας θα επιστρέφει τον πίνακα:
-1 1 1 1
1 1 -1 -1
-1 -1 1 -1
-1 1 1 1
Φτιάξτε μία συνάρτηση η οποία θα επιστρέφει έναν πίνακα με 10 γραμμές και 100 στήλες ο οποίος θα περιέχει τη προπαίδεια όλων των αριθμών από το 1 μέχρι και το 100. Δηλαδή:
- Η πρώτη στήλη θα περιέχει τη προπαίδεια του 1
- Η 2η στήλη θα περιέχει τη προπαίδεια του 2
- ...
- Η 100η στήλη θα περιέχει τη προπαίδεια του 100
Σημείωση: Ως προπαίδεια εννοούμε το γινόμενο ενός αριθμού με όλους τους αριθμούς από το 1 μέχρι 10.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο μία λίστα με πίνακες. Θα επιστρέφει τον πίνακα ο οποίος έχει το μεγαλύτερο άθροισμα στοιχείων.
Φτιάξτε μία συνάρτηση που θα παίρνει σαν παράμετρο μία λίστα με πίνακες. Θα επιστρέφει τον πίνακα με τα περισσότερα στοιχεία. Αν υπάρχουν περισσότεροι από έναν πίνακες με τα περισσότερα στοιχεία επιστρέφει απλά έναν από αυτούς.
Φτιάξτε μία συνάρτηση που θα παίρνει σαν παράμετρο μία λίστα με πίνακες οι οποίοι περιέχουν ακέραιους αριθμούς. Θα επιστρέφει τον πίνακα με τους περισσότερους ζυγούς (άρτιους) αριθμούς. Αν υπάρχουν περισσότεροι από έναν πίνακες με αυτή την ιδιότητα απλά επιστρέφει έναν από αυτούς.
Φτιάξτε μία λίστα η οποία να περιέχει έναν οποιοδήποτε πίνακα, ένα οποιοδήποτε διάνυσμα, έναν οποιοδήποτε ακέραιο, μία οποιαδήποτε λογική τιμη (TRUE/FALSE), ένα οποιοδήποτε αλφαριθμητικό, ένα οποιοδήποτε data frame και μία οποιαδήποτε λίστα.
Φτιάξτε μία λίστα η οποία να έχει:
- το στοιχεία με το όνομα a το οποίο είναι ένας ακέραιος
- το στοιχείο με το όνομα b το οποίο είναι μία λίστα
- το στοιχείο με το όνομα c το οποίο είναι ένα αλφαριθμητικό.
Το a και το c μπορεί να περιέχουν ότι τιμή θέλετε. Το στοιχείο με το όνομα b πρέπει να είναι μία λίστα η οποία να έχει δύο στοιχεία:
- το στοιχείο με το όνομα k το οποίο είναι ένα διανυσμα με τις τιμές 5,6,8 και
- το στοιχείο με το όνομα my.name το οποίο να είναι μία λίστα η οποία να περιέχει δύο στοιχεία:
- το στοιχείο με το όνομα name το οποίο περιέχει το όνομά σας (σε greeklish), και
- το στοιχείο με το όνομα surname το οποιό περιέχει το επίθετό σας (σε greeklish)
Έστω μία λίστα η οποία περιέχει 2 στοιχεία: Το στοιχείο με το όνομα weight το οποίο περέχει το βάρους ενός ανθρώπου και το στοιχείο με το όνομα height το οποίο περιέχει το ύψος του. Για παράδειγμα:
a <- list(weight=70, height=1.7)
Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο μία λίστα με αυτά τα πεδία. Η συνάρτηση θα επιστρέφει TRUE
αν το BMI (Body Mass Index) του ανθρώπου είναι μεγαλύτερο ή ίσο με 25
ή FALSE
αν είναι μικρότερο από 25
. Δίνεται ότι το BMI είναι βάρος / (ύψος2)
Μία εταιρία έχει 10 εργαζόμενους. Η εταιρεία διατηρεί μία λίστα με 10 στοιχεία, ένα για κάθε εργαζόμενο. Κάθε στοιχείο είναι μία λίστα η οποία περιέχει 3 πεδία:
- Το πεδίο με το όνομα name το οποίο περιέχει το όνομα του εργαζόμενου
- Το πεδίο με το όνομα age το οποίο περιέχει την ηλικία του εργαζόμενου (σε χρόνια)
- Το πεδίο με το όνομα salary το οποίο περιέχει τον μισθό του εργαζόμενου.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο μία τέτοια λίστα. Θα επιστρέφει μία νέα λίστα η οποία θα έχει 2 πεδία:
- Το πεδίο με το όνομα: average.age το οποίο θα περιέχει τον μέσο όρο ηλικίας όλων των εργαζομένων
- Το πεδίο με το όνομα: average.salary το οποίο θα περιέχει τον μέσο όρο του μισθού όλων των εργαζόμενων.
Μπορείτε να τεστάρετε τη συνάρτησή σας με αυτή τη λίστα:
a<-list(
list(name="a", age=30, salary=100),
list(name="b", age=40, salary=200),
list(name="c", age=50, salary=300),
list(name="d", age=60, salary=400),
list(name="e", age=70, salary=500),
list(name="f", age=80, salary=600),
list(name="g", age=90, salary=700),
list(name="h", age=100, salary=800),
list(name="i", age=110, salary=900),
list(name="j", age=120, salary=1000)
)
Μία εταιρία έχει 10 εργαζόμενους. Η εταιρεία διατηρεί μία λίστα με 10 στοιχεία. Κάθε στοιχείο είναι μία λίστα η οποία περιέχει 2 πεδία:
- Το πεδίο με το όνομα name το οποίο περιέχει το όνομα του εργαζόμενου
- Το πεδίο με το όνομα salary το οποίο περιέχει τον μισθό του εργαζόμενου.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο μία τέτοια λίστα. Θα επιστρέφει μία νέα λίστα η οποία θα περιέχει δύο πεδια:
- Το πεδίο με το όνομα min.name το οποίο θα περιέχει το όνομα του εργαζομένου με τον μικρότερο μισθό.
- Το πεδίο με το όνομα max.name το οποίο θα περιέχει το όνομα του εργαζομένου με τον μεγαλύτερο μισθό.
Μπορείτε να τεστάρετε τη συνάρτησή σας με αυτή τη λίστα:
a<-list(
list(name="a", salary=100),
list(name="b", salary=200),
list(name="c", salary=300),
list(name="d", salary=400),
list(name="e", salary=500),
list(name="f", salary=600),
list(name="g", salary=700),
list(name="h", salary=800),
list(name="i", salary=900),
list(name="j", salary=1000)
)
Μία εταιρία έχει 10 εργαζόμενους. Η εταιρεία διατηρεί μία λίστα με 10 στοιχεία. Κάθε στοιχείο είναι μία λίστα η οποία περιέχει 2 πεδία:
- Το πεδίο με το όνομα name το οποίο περιέχει το όνομα του εργαζόμενου
- Το πεδίο με το όνομα salary το οποίο περιέχει τον μισθό του εργαζόμενου.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ως παράμετρο μία τέτοια λίστα. Θα επιστρέφει ένα διάνυσμα το οποίο θα περιέχει τα ονόματα όσων έχουν μισθό μεγαλύτερο ή ίσο με 1000.
Μπορείτε να τεστάρετε τη συνάρτησή σας με αυτή τη λίστα:
a<-list(
list(name="a", salary=100),
list(name="b", salary=200),
list(name="c", salary=300),
list(name="d", salary=400),
list(name="e", salary=500),
list(name="f", salary=600),
list(name="g", salary=700),
list(name="h", salary=800),
list(name="i", salary=900),
list(name="j", salary=1000)
)
Έστω μία λίστα με 20 στοιχεία. Κάθε στοιχείο της λίστας είναι μία λίστα η οποία έχει 2 πεδία:
- Το πεδίο name το οποίο περιέχει το όνομα μία ποδοσφαιρικής ομάδας.
- Το πεδίο points το οποίο περιέχει τους βαθμούς που έχει συγκεντρώσει στο πρωτάθλημα.
Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο μία τέτοια λίστα και θα επιστρέφει ένα διάνυσμα με τα ονόματα των τριών ομάδων που έχουν τη μικρότερη βαθμολογία.
Φτιάξτε μια συνάρτηση που να δέχεται δύο παράμετρους. Καθέ παράμετρος θα είναι μία λίστα με αριθμούς. Η συνάρτηση θα επιστρέφει μια λίστα με το μεγαλύτερο στοιχείο κάθε θέσης. Σε περιπτωση που ο χρήστης δωσει λίστες με διαφορετικό μέγεθος θα επιστρέφει το αλφαριθμητικό: "error".
Φτιαξτε μια συνάρτηση που θα έχει τρεις παράμετρους. Και οι 3 θα είναι λίστες με αριθμούς. Και οι 3 θα έχουν ίδιο μέγεθος. Η συνάρτηση θα επιστρέφει ενα πίνακα του οποιου οι στήλες θα αποτελούνται απο αυτές τις 3 λίστες. H πρώτη στήλη θα έχει τη λίστα με το μεγαλύτερη άθροισμα, η 2η στήλη θα έχει τη λίστα με το 2ο μεγαλύτερο άθροισμα και η 3η στήλη θα έχει τη λίστα με το μικρότερο άθροισμα.
Δίνεται ότι η συνάρτηση typeof
επιστρέφει τον τύπο μίας μεταβλητής στην R. Για παράδειγμα:
typeof("hello") # Επιστρέφε "character"
Φτιάξτε μία συνάρτηση η οποία θα παίρνει σαν παράμετρο μία λίστα. Θα επιστρέφει μία νέα λίστα η οποία θα περιέχει μόνο τα στοιχεία της λίστας των οποίων ο τύπος τους είναι αλφαριθμητικά ("character"
)
Γράξτε κώδικα σε R έτσι ώστε όταν γράφω:
a$a$a$a$a
Να τυπώνει "hello"
Γράψτε κώδικα σε R έτσι ώστε όταν γράφω:
a[[a$a]]
Να τυπώνει "hello"
Δίνεται ότι ο παρακάτω κώδικας φτιάχνει ένα διάνυσμα που περιέχει όλα τα γράμματα του αγγλικού αλφάβητου:
a <- strsplit("abcdefghijklmnopqrstuvwxyz", "")[[1]]
Φτιάξτε κώδικα σε R ο οποίος να φτιάχνει μία λίστα με το όνομα vowels η οποία θα περιέχει 26 στοιχεία, ένα για κάθε γράμμα του αγγλικού αλφάβητου. Το κάθε στοιχείο θα έχει σαν όνομα το γράμμα του αλφάβητου και η τιμή του θα είναι TRUE/FALSE ανάλογα με το αν είναι φωνήεν ή όχι. Τα φωνήεντα είναι: 'aeiouy'
Δηλαδή θα πρέπει να μπορώ να γράφω:
vowels$e # Τυπώνει TRUE
vowels$b # Τυπώνει FALSE
Γράψτε κώδικα R τέτοιον ώστε όταν γράφω:
b<-a$a
a$b
Να τυπώνει "hello"
Μία εταιρία, έχει για κάθε εργαζόμενο μία λίστα με τα παρακάτω πεδία:
- Πεδίο
name
: περιέχει το όνομα του εργαζομένου - Πεδίο
salary
: περιέχει τον μισθό του εργαζόμενου - Πεδίο
project
: Το όνομα του project στο οποίο εργάζεται
Η ίδια εταιρία έχει για κάθε project που διαχειρίζεται, μία λίστα με τη παρακάτω δομή:
- Πεδίο
name
: περιέχει το όνομα του project - Πεδίο
value
: περιέχει την αξία του project
Ας υποθέσουμε λοιπόν ότι υπάρχει η λίστα employees
η οποία περιέχει τα στοιχεία για 100 εργαζόμενους της εταιρίας και η λίστα projects
η οποία περιέχει τα στοιχεία για 20 projects που διαχειρίζεται η εταιρία.
Ισχύει δηλαδή ότι:
employees <- list(
list(name="a", salary=10, project="p1"),
list(name="b", salary=20, project="p2"),
.... # synolo 100 stoixeia
)
projects <- list(
list(name="p1", value=1000),
list(name="p2", value=2000),
... # synolo 20 stoixeia
)
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ένα όρισμα με το όνομα employee.name και θα επιστρέφει την αξία (value) του project στο οποίο εργάζεται ο εργαζόμενος με αυτό το όνομα.
Μία εταιρία, έχει για κάθε εργαζόμενο μία λίστα με τα παρακάτω πεδία:
- Πεδίο "name": περιέχει το όνομα του εργαζομένου
- Πεδίο "salary": περιέχει τον μισθό του εργαζόμενου
- Πεδίο "project": Το όνομα του project στο οποίο εργάζεται
Η ίδια εταιρία έχει για κάθε project που διαχειρίζεται, μία λίστα με τη παρακάτω δομή:
- Πεδίο name: περιέχει το όνομα του project
- Πεδίο value: περιέχει την αξία του project
Ας υποθέσουμε λοιπόν ότι υπάρχει η λίστα employees
η οποία περιέχει τα στοιχεία για 100 εργαζόμενους της εταιρίας και η λίστα projects
η οποία περιέχει τα στοιχεία για 20 projects που διαχειρίζεται η εταιρία.
Ισχύει δηλαδή ότι:
employees <- list(
list(name="a", salary=10, project="p1"),
list(name="b", salary=20, project="p2"),
.... # synolo 100 stoixeia
)
projects <- list(
list(name="p1", value=1000),
list(name="p2", value=2000),
... # synolo 20 stoixeia
)
Φτιάξτε μία συνάρτηση η οποία θα παίρνει ένα όρισμα με το όνομα project.name
και θα επιστρέφει το άθροισμα του μισθού όλων των εργαζομένων που απασχολούνται στο project με αυτό το όνομα.
Σε αυτή τη σελίδα: https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Greece υπάρχει μία λίστα με τον πληθυσμό των Ελληνικών πόλεων.
Μπορείτε να κατεβάσετε ένα μέρος από τον πίνακα αυτός σε μορφή R data frame με την εντολή:
cities <- read.csv('https://www.dropbox.com/s/fuihnmk8fr0hozb/cities.csv?dl=1')
Εναλλακτικό αν δεν δουλεύει το παραπάνω:
cities <- read.csv("https://raw.githubusercontent.com/kantale/biol-109/main/cities.csv")
Κάντε copy-paste αυτή την εντολή.
Το data.frame cities
περιέχει τις εξής στήλες:
- names: Το όνομα της πόλης
- population: Ο πληθυσμός της πόλης (απογραφή 2011)
- region: Η περιφέρεια στην οποία ανήκει η πόλη
Χρησιμοποιώντας το data frame cities, απαντήστε με κώδικα R στο ερώτημα:
Ποιος είναι ο μέσος όρος του πληθυσμού όλων των πόλεων της περιφέρειας "Crete";
Σε αυτή τη σελίδα: https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Greece υπάρχει μία λίστα με τον πληθυσμό των Ελληνικών πόλεων.
Μπορείτε να κατεβάσετε ένα μέρος από τον πίνακα αυτό σε μορφή R data frame με την εντολή:
cities <- read.csv('https://www.dropbox.com/s/fuihnmk8fr0hozb/cities.csv?dl=1')
Εναλλακτικό αν δεν δουλεύει το παραπάνω:
cities <- read.csv("https://raw.githubusercontent.com/kantale/biol-109/main/cities.csv")
Κάντε copy-paste αυτή την εντολή.
Το data.frame cities
περιέχει τις εξής στήλες:
- names: Το όνομα της πόλης
- population: Ο πληθυσμός της πόλης (απογραφή 2011)
- region: Η περιφέρεια στην οποία ανήκει η πόλη
Χρησιμοποιώντας το data frame cities, απαντήστε με κώδικα R στο ερώτημα:
Ποια είναι η δεύτερη μεγαλύτερη σε πληθυσμό πόλη της περιφέρειας Crete;
Σε αυτή τη σελίδα: https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Greece υπάρχει μία λίστα με τον πληθυσμό των Ελληνικών πόλεων.
Μπορείτε να κατεβάσετε ένα μέρος από τον πίνακα αυτό σε μορφή R data frame με την εντολή:
cities <- read.csv('https://www.dropbox.com/s/fuihnmk8fr0hozb/cities.csv?dl=1')
Εναλλακτικό αν δεν δουλεύει το παραπάνω:
cities <- read.csv("https://raw.githubusercontent.com/kantale/biol-109/main/cities.csv")
Κάντε copy-paste αυτή την εντολή.
Το data.frame cities
περιέχει τις εξής στήλες:
- names: Το όνομα της πόλης
- population: Ο πληθυσμός της πόλης (απογραφή 2011)
- region: Η περιφέρεια στην οποία ανήκει η πόλη
Χρησιμοποιώντας το data frame cities, απαντήστε με κώδικα R στο ερώτημα:
Ποια περιφέρεια της Ελλάδας έχει το δεύτερο μεγαλύτερο πληθυσμό; (πληθυσμός μίας περιφέρειας = το άθροισμα των πληθυσμών των πόλεών της).
Σε αυτή τη σελίδα: https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Greece υπάρχει μία λίστα με τον πληθυσμό των Ελληνικών πόλεων.
Μπορείτε να κατεβάσετε ένα μέρος από τον πίνακα αυτό σε μορφή R data frame με την εντολή:
cities <- read.csv('https://www.dropbox.com/s/fuihnmk8fr0hozb/cities.csv?dl=1')
Εναλλακτικό αν δεν δουλεύει το παραπάνω:
cities <- read.csv("https://raw.githubusercontent.com/kantale/biol-109/main/cities.csv")
Κάντε copy-paste αυτή την εντολή.
Το data.frame cities
περιέχει τις εξής στήλες:
- names: Το όνομα της πόλης
- population: Ο πληθυσμός της πόλης (απογραφή 2011)
- region: Η περιφέρεια στην οποία ανήκει η πόλη
Χρησιμοποιώντας το data frame cities, απαντήστε με κώδικα R στο ερώτημα:
Ποιες πόλεις της περιφέρειας "Peloponesse" έχουν πληθυσμό μικρότερο από τη 'Mytilene';
Ο παρακάτω κώδικας:
genes <- data.frame(
name = unlist(lapply(c(1:10), function(x) { return (paste('Gene', x))})),
start = as.integer(runif(10, 1000, 2000)),
end = as.integer(runif(10, 2001, 3000))
)
Κάντε copy-paste αυτές τις εντολές.
Παράγει ένα τυχαίο data.frame με το όνομα genes το οποίο περιέχει τις ακόλουθες στήλες:
- name: το όνομα ενός γονιδίου.
- start: μία θέση από όπου ξεκινάει
- end: μία θέση όπου τελειώνει.
Γράξτε κώδικα R ο οποίος προσθέτει μία καινούργια στήλη στο genes με το όνομα length. Η στήλη αυτή θα περιέχει το μήκος του κάθε γονιδίου. Το μήκος ενός γονιδίου ορίζεται ώς η διαφορά μεταξύ της end θέσης και της start θέσης.
Φτιάξτε ένα data frame που να περιέχει 20 γραμμές. Το data frame πρέπει να περιέχει τις εξής στήλες (δίνεται ΟΝΟΜΑ
: περιγραφή):
A
: περιέχει τυχαίες τιμές από το 1 μέχρι το 100B
: περιέχει τυχαίες τιμές από το 1 μέχρι το 100C
: περιέχει την ίδια τιμή με τη στήλη A αν η τιμή της στήλης A είναι μεγαλύτερη από τη τιμή της στήλης B, αλλιώς περιέχει τη τιμή της στήλης B.D
: περιέχει την απόλυτη τιμή της διαφοράς των στηλών A και B (η απόλυτη τιμή ενός αριθμούς n είναι:abs(n)
)E
: περιέχει τον μέσο όρο των τιμών της στήλης A και B.
Το παρακάτω data frame περιέχει τους βαθμούς που γράψανε στη πρόοδο και στο τελικό διαγώνισμα 10 φοιτητές:
grades <- data.frame(
name = unlist(lapply(1:10, function(x) paste('Student', x))),
proodos = c(9,6,5,8,1,1,1,8,6,8),
teliko = c(8,7,7,5,2,5,1,9,9,9)
)
Κάντε copy-paste αυτές τις εντολές.
Γράψτε κώδικα σε R ο οποίος να υπολογίζει το παρακάτω:
Αν η πρόοδος (proodos) μετράει για το 40% της τελικής βαθμολογίας και το τελικό διαγώνισμα (teliko) για το 60% και η βάση για να περάσει κάποιος το μάθημα είναι 5, πόσοι φοιτητές πέρασαν το μάθημα;
Έστω το παρακάτω data frame:
samples <- data.frame(
name = unlist(lapply(1:10, function(x) paste('Student', x))),
mutation = c(TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE),
disease = c(TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE)
)
Κάντε copy-paste αυτές τις εντολές.
Αυτό το data frame περιέχει για κάθε έναν από 10 ανθρώπους την εξής πληροφορία: αν έχει μία μετάλλαξη (mutation) και αν έχει μία ασθένεια (disease). Φτιάξτε μία συνάρτηση η οποία να παίρνει ως παράμετρο ένα data frame όπως το samples και να επιστρέφει ένα νέο data frame το οποιο να έχει 2 γραμμές με ονόματα: yes.mutation
, no.mutation
και 2 στήλες με ονόματα yes.disease
και no.disease
.
- Στη γραμμή
yes.mutation
και στη στήληyes.disease
θα περιέχει το πλήθος των ανθρώπων που έχουν τη μετάλλαξη και την ασθένεια. - Στη γραμμή
yes.mutation
και στη στήληno.disease
θα περιέχει το πλήθος των ανθρώπων που έχουν τη μετάλλαξη αλλά δεν έχουν την ασθένεια. - Στη γραμμή
no.mutation
και στη στήληyes.disease
θα περιέχει το πλήθος των ανθρώπων που δεν έχουν τη μετάλλαξη αλλά έχουν την ασθένεια. - Στη γραμμή
no.mutation
και στη στήληno.disease
θα περιέχει το πλήθος των ανθρώπων που δεν έχουν τη μετάλλαξη και δεν έχουν την ασθένεια.
Ο παρακάτω κώδικας:
genes <- data.frame(
name = unlist(lapply(c(1:10), function(x) { return (paste('Gene', x))})),
start = as.integer(runif(10, 1000, 2000))
)
genes['end'] <- genes['start'] + as.integer(runif(10, 300, 700))
Παράγει ένα τυχαίο data.frame με το όνομα genes το οποίο περιέχει τις ακόλουθες στήλες:
name
: το όνομα ενός γονιδίου.start
: μία θέση από όπου ξεκινάειend
: μία θέση όπου τελειώνει.
Κάντε copy-paste τον παραπάνω κώδικα.
Φτιάξτε μία συνάρτηση η οποία να παίρνει ως παράμετρο έναν data frame αυτού του είδος. Η συνάρτηση θα επιστρέφει ένα νέο data frame το οποία θα είναι το ίδιο με το genes. Απλά θα έχει τις ακόλουθες επιπλέον στήλες:
col_1200_1500
: ΠεριέχειTRUE
αν υπάρχει έστω και μία θέση του γονιδίου η οποία να ανήκει στο κλειστό διάστημα: [1200, 1500], διαφορετικά περιέχειFALSE
col_NOT_1700_1800
: ΠεριέχειTRUE
αν ΔΕΝ υπάρχει καμία θέση του γονιδίου η οποία να ανήκει στο κλειστό διάστημα [1700, 1800], διαφορετικά περιέχειFALSE
Ο παρακάτω κώδικας:
genes <- data.frame(
name = unlist(lapply(c(1:10), function(x) { return (paste('Gene', x))})),
start = as.integer(runif(10, 1000, 2000))
)
genes['end'] <- genes['start'] + as.integer(runif(10, 300, 700))
Παράγει ένα τυχαίο data.frame με το όνομα genes το οποίο περιέχει τις ακόλουθες στήλες:
name
: το όνομα ενός γονιδίου.start
: μία θέση από όπου ξεκινάει σε ένα γονιδίωμαend
: μία θέση όπου τελειώνει σε ένα γονιδίωμα.
Κάντε copy-paste τον παραπάνω κώδικα.
Φτιάξτε μία συνάρτηση η οποία να παίρνει ως παράμετρο έναν data frame αυτού του είδος. Η συνάρτηση θα επιστρέφει ένα νέο data frame το οποία θα είναι το ίδιο με το genes. Απλά θα έχει τις ακόλουθες επιπλέον στήλες:
col_1200_1500
Περιέχει το πλήθος των θέσεων του γονιδίου που ανήκουν στο κλειστό διάστημα: [1200, 1500].col_NOT_1700_1800
Περιέχει το πλήθος των θέσεων του γονιδίου που ΔΕΝ ανήκουν στο κλειστό διάστημα: [1700, 1800]
Η παρακάτω εντολή:
samples <- data.frame(
name = unlist(lapply(c(1:50), function(x) { return (paste('Sample', x))})),
age = as.integer(runif(50, 20, 90))
)
Φτιάχνει ένα data frame με τις εξής στήλες:
name
: Το όνομα ενός ανθρώπουage
: Η ηλικία του.
Κάντε copy-paste τον παραπάνω κώδικα.
Προσθέστε μία νέα στήλη με το όνομα age_group. Η τιμή της νέας στήλης θα είναι σύμφωνα μα τον εξής κανόνα:
- Αν το age είναι από 20 μέχρι και 45, τότε η τιμή είναι "young"
- Αν η τιμή είναι μεγαλύτερη από 45 μέχρι και 60 τότε η τιμή είναι "middle_age"
- Αν η τιμή είναι μεγαλύτερη από 60 μέχρι και 80 τότε η τιμή είναι "old"
- Αν η τιμή είναι μεγαλύτερη από 80 τότε η τιμή είναι "very_old"
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο, γράψτε κώδικα σε R η οποία απαντάει στο ερώτημα:
Από τις σχολές που οι επιτυχόντες (στήλη: "EPITYXONTES") είναι από 100 εως 150 άτομα, ποια είναι αυτή με τα περισσότερα μόρια εισαγωγής (στήλη: "MORIA");
Πάρτε μόνο τις γραμμές όπου η στήλη "EIDOS_THESIS"
έχει τη τιμή "GEL GENIKH SEIRA HM. (NEO)"
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο, γράψτε κώδικα σε R η οποία απαντάει στο ερώτημα:
Ποιες απο τις σχολές του ιδρύματος του Πανεπιστημίου Κρήτης ("PAN. KRHTHS") εχουν περισσότερα μόρια εισαγωγής (στήλη "MORIA") απο το μέσο όρο μορίων εισαγωγής όλων των σχολών του ιδρύματος του Πανεπιστημίου Ιωαννίνων ("PAN. IWANNINWN") ;
Πάρτε μόνο τις γραμμές όπου η στήλη "EIDOS_THESIS"
είναι "GEL GENIKH SEIRA HM. (NEO)"
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο, φτιάξτε ένα νέο data frame το οπου θα περιέχει μόνο τις γραμμές από το baseis
όπου η στήλη "EIDOS_THESIS"
έχει τιμή "GEL GENIKH SEIRA HM. (NEO)"
. Στη συνέχεια προσθέστε στο νέο data frame τη στήλη με το όνομα "POSOSTO" η οποία περιέχει το ποσοστό των επιτυχόντων ως προς το συνολικό αριθμό των επιτυχόντων του ιδρύματος που ανήκει η κάθε σχολή.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο, γράψτε κώδικα σε R ο οποίος παράγει ένα matrix το οποίο να περιέχει για κάθε ίδρυμα (στήλη: "IDRYMA"
) το πλήθος των σχολών που έχει.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο, γράψτε κώδικα σε R ο οποίος να απαντάει στο ερώτημα:
Ποιο είναι το άθροισμα των επιτυχόντων (στήλη: "EPITYXONTES"
) των σχολών που το όνομά τους (στήλη: "ONOMA_SXOLHS"
) περιέχει το αλφαριθμητικό EKKLHSIA
;
Δίνεται ότι η συνάρτηση grepl(a, b)
ελέγχει αν το αλφαριθμητικό a
υπάρχει στο b
.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Φτιάξτε ένα barplot με το πλήθος των σχολών που έχει το κάθε ίδρυμα (στήλη:
"IDRYMA"
)
Το barplot σας θα πρέπει να είναι κάπως έτσι:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Βρείτε τα Ιδρύματα που έχουν σχολή η οποία να έχει το "BIOL" στο όνομά της, έστω ότι ονομάζουμε το σύνολο αυτό: BIOLOGIA (hint: grepl)
- Βρείτε τα Ιδρύματα που έχουν σχολή η οποία να έχει το "XHMEIAS" στο όνομά της, έστω ότι ονομάζουμε το σύνολο αυτό: XHMEIA (hint: grepl)
- Βρείτε τα κοινά στοιχεία μεταξύ των BIOLOGIA, XHMEIA (hint: intersect), έστω COMMON η μεταβλητή με τα κοινά στοιχεία.
- Για τα Ιδρύματα που υπάρχουν στο COMMON, βρείτε το πλήθος των επιτυχόντων στη σχολή που έχει το BIOL στο όνομά της.
- Για τα Ιδρύματα που υπάρχουν στο COMMON, βρείτε το πλήθος των επιτυχόντων στη σχολή που έχει το XHMEIAS στο όνομά της.
- Φτιάξτε ένα barplot όπου η κάθε "μπάρα" θα είναι ένα Ίδρυμα από τα COMMON. Η κάθε μπάρα θα έχει δύο σκιάσεις. Η πρώτη θα δείχνει το πλήθος των επιτυχόντων στο τμήμα του ιδρύματος που έχει το "BIOL" στο όνομά του και η δεύτερη σκίαση θα δείχνει το πλήθος των επιτυχόντων στο τμήμα του ιδρύματος που έχει το "XHMEIAS στο όνομά του.
Το αποτέλεσμα θα πρέπει να είναι κάπως έτσι:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Βρείτε το πλήθος επιτυχόντων στη σχολή με το όνομα "BIOLOGIAS (HRAKLEIO)"
- Βρείτε το πλήθος επιτυχόντων στη σχολή με το όνομα "FYSIKHS (HRAKLEIO)"
- Βρείτε το πλήθος επιτυχόντων στη σχολή με το όνομα "BIOLOGIAS (PATRA)"
- Βρείτε το πλήθος επιτυχόντων στη σχολή με το όνομα "FYSIKHS (PATRA)"
Φτιάξτε το παρακάτω barplot:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Πάρτε μόνο τις γραμμές που: Η στήλη
IDRYMA
περιέχει τοKRHTHS
KAI η στήλη"EIDOS_THESIS"
είναι ίση με"GEL GENIKH SEIRA HM. (NEO)"
. - Βρείτε τον μέσο όρο των μορίων (στήλη:
MORIA
) για κάθε ίδρυμα. Δηλαδή για κάθε ένα από τα 3 ιδρύματα που έχει τοKRHTHS
στο όνομά του, θα βρείτε τον μέσο όρο των μορίων των σχολών του. Συνολικά θα έχετε βρει 3 μέσους όρους. - Φτιάξτε ένα barplot με αυτούς τους μέσους όρους. Κάθε μπάρα θα πρέπει να έιναι ένα ίδρυμα .
Το αποτέλεσμα θα πρέπει να είναι κάτι σαν αυτό:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Φτιάξτε μια γραφική παράσταση της συνάρτησης sin(x) για x από -4 μέχρι 4. Χρησιμοποιήστε βήμα 0.01
hint:
seq(0, 1, by=0.01) # επιστρέφει ένα διάνυσμα από 0 μέχρι και 1 με βήμα 0.01
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Φτιάξτε ένα plot το οποίο να έχει μαζί:
- Τη γραφική παράσταση της συνάρτησης f(x) = x2 + 1
- Τη γραφική παράσταση της συνάρτησης f(x) = -x2 + 10
Πάρτε τιμές του χ από το -4 μέχρι το 4 με βήμα 0.01
hint:
seq(0, 1, by=0.01) # επιστρέφει ένα διάνυσμα από 0 μέχρι και 1 με βήμα 0.01
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Φττιάξτε μια γραφική παράσταση χρησιμοποιώντας γραμμές. Οι γραμμές πρέπει να είναι έτσι ώστε να φαίνεται (στο περίπου) το γράμμα "A". Δηλαδή γράψτε κώδικα R ο οποίος παράγει μία γραφική παράσταση σαν αυτή:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Οι παρακάτω εντολές:
temperatures <- read.csv(url("https://www.dropbox.com/s/pelvlslkoja0j5b/f9437817beb9e8e65ffd4dd2d198ffaa.csv?dl=1"))
temperatures$X <- NULL
Φορτώνουν ένα data frame με τις θερμοκρασίες που μετρήθηκαν τις ίδες χρονικές στιγμές μιας μέρας στην Αθήνα και στη Θεσσαλονίκη.
Φτιάξτε ένα plot το οποίο να έχει δύο γραμμές.
- Η πρώτη γραμμή θα δείχνει τη διακύμανση της θερμοκρασίας στην Αθήνα χρησιμοποιώντας χρώμα μπλε (blue)
- Η δεύτερη γραμή θα δείχνει τη διακύμανση της θερμοκρασίας στη θεσσαλονίκη χρησιμοποιώντας χρώμα κόκκινο (red).
Το plot που θα φτιάξετε θα πρέπει να είναι σαν αυτό:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Παρτε μόνο τις γραμμές για τις οποίες η στήλη
EIDOS_THESIS
έχει τιμή:GEL GENIKH SEIRA HM. (NEO)
. - Από το αποτέλεσμα πάρτε τις τιμές της στήλης:
MORIA
. - Ταξινομήστε αυτές τις τιμές από το μικρότερο στο μεγαλύτερο (hint: sort)
- Κάντε ένα πλοτ με αυτές τις ταξινομημένες τιμές.
Το plot πρέπει να είναι κάπως έτσι:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Τρέχοντας το παρακάτω κομμάτι κώδικα δημιουργείται ένα data frame 50 γραμμών μς τις παρακάτω στήλεςς:
- Η στήλη
gender
περιέχει το φύλο (female, male) - Η στήλη
age
περιέχει την ηλικία - η στήλη
disease
περιέχειTRUE
σε αυτούς που εχουν μία ασθένεια καιFALSE
σε αυτούς που δεν την έχουν.
samples <- data.frame(
gender = sample(c('female', 'male'), size = 50, replace = TRUE),
age = as.integer(runif(n = 50, min = 20, max = 60)),
disease = sample(c(TRUE, FALSE), size = 50, replace = TRUE)
)
Φτιαξτε ενα barplot που να έχει 2 μπάρες. Κάθε μπάρα θα εκπροσωπεί και ένα φύλο. Κάθε μπάρα θα έχει δύο σκιάσεις: μία που θα δείχνει το πλήθος αυτών που έχουν την ασθένεια (disease) και μία το πλήθος αυτών που δεν την έχουν.
Το πλοτ θα πρέπει να είναι κάπως έτσι:
- ΠΡΟΣΟΧΗ Αυτό είναι ένα plot για τα τυχαία δεδομένα που παρήγαγε σε εμένα. Το δικό σας ίσως να διαφέρει λίγο.
- Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
Σε αυτό το λινκ:
https://docs.google.com/spreadsheets/d/14kP59eFgCoGh_zlvvtyfQyK58xxgIrTP2wUnZmBG1wY/edit?usp=sharing
Υπάρχει στο Google Sheets το αρχείο με τις βάσεις των πανελληνίων του 2020. Το αρχείο αυτό ΔΕΝ περιέχει ελληνικούς χαρακτήρες. Επίσης για αυτή την άσκηση ΔΕΝ χρειάζεται να το κατεβάσετε. Μπορείτε πολύ εύκολα να το φορτώσετε στην R με τη παρακάτω εντολή:
baseis <- read.csv(url('https://www.dropbox.com/s/v3ztdbznefr7qbr/baseis_gr.csv?dl=1'))
Κάντε copy-paste αυτήν την εντολή.
Αφού φορτώσετε αυτό το αρχείο:
- Έστω το διάνυσμα:
inst <- c("PAN. KRHTHS", "PAN. PATRWN", "EKPA", "PAN. IWANNINWN")
- Πάρτε τις γραμμές για τις οποίες η στήλη
IDRYMA
ανήκει σε ένα από τα ιδρύματα που υπάρχουν στο διάνυσμαinst
. - Φτιάξτε μια καινούρια στήλη με το όνομα "LESS_1000". Η στήλη αυτή θα έχει τιμή TRUE αν τα μόρια εισαγωγής μίας σχολής είναι μικρότερα από 10000, διαφορετικά θα έχει τιμή FALSE.
- Φτιάξτε ενα barplot όπου η κάθε "μπάρα" θα είναι ένα Ίδρυμα από τα ιδρύματα που υπάρχουν στο διάνυσμα
inst
. Η κάθε μπάρα θα έχει δύο σκιάσεις. Η πρώτη θα δείχνει το πλήθος των σχολών του ιδρύματος που έχουν μόρια εισαγωγής <10000 και η δεύτερη σκίαση θα δείχνει το πλήθος των σχολών του ιδρύματος που έχουν μόρια εισαγωγής >=10000.
Το plot θα πρέπει να είναι κάπως έτσι:
Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.
- Φτιάξτε ένα διάνυσμα με το όνομα a με 100 τυχαίες τιμές από το -1 μέχρι το 1
- Φτιάξτε ένα διάνυσμα με το όνομα b με 100 τυχαίες τιμές από το -1 μέχρι το 1
- Φτιάξτε ένα scatter plot (συζευγμένα δεδομένα) με τα σημεία που ορίζονται στο επίπεδο όπου X=a και Y=b. Δηλαδή το scatter plot θα δείχνει πως κατανέμονται στον χώρο τα 100 τυχαία σημεία που φτιάξατε.
- Τα σημεία που είναι στο 1ο τεταρτημόριο (δηλαδή a>=0 και b>=0) θα πρέπει να είναι μπλε (blue)
- Τα σημεία που είναι στο 2ο τεταρτημόριο (δηλαδή a<0 και b>=0) θα πρέπει να είναι κόκκινα (red)
- Τα σημεία που είναι στο 3ο τεταρτημόριο (δηλαδή a<0 και b<0) θα πρέπει να είναι πράσινα (green)
- Τα σημεία που είναι στο 4ο τεταρτημόριο (δηλαδή a>=0 και b<0) θα πρέπει να είναι μαύρα (black).
Το plot σας θα πρέπει να είναι κάπως έτσι:
- ΠΡΟΣΟΧΗ Αυτό είναι ένα plot για τα τυχαία δεδομένα που παρήγαγε σε εμένα. Το δικό σας ίσως να διαφέρει λίγο.
- Σημείωση: Βάλτε στο μέιλ με τις απαντήσεις σας ΜΟΝΟ τον κώδικα που παράγει το γράφημα. Όχι το ίδιο το γράφημα.