# Δημιουργία τριών διανυσμάτων με ονόματα, ηλικίες και φύλα Names <- c("Μαρια","Nikos","Giorgos","Anna") Ages <- c(20,25,30,50) Gender <- c("F","M","M","F") # Δημιουργία data frame με τις παραπάνω μεταβλητές df = data.frame(Names,Ages,Gender) # Φόρτωση βιβλιοθήκης για ανάγνωση αρχείων Excel library(readxl) # Ανάγνωση αρχείου Excel df_fish <- read_excel("updated.xlsx") # Ανάγνωση αρχείου CSV με ορισμένο διαχωριστικό "," df_fish_csv <- read.csv("updated.csv",sep = ",") # Ανάγνωση αρχείου TXT με tab ως διαχωριστικό και κεφαλίδες στη πρώτη γραμμή df_fish_txt <- read.table("updated.txt", header = TRUE, sep = "\t") # --- Επιλογή δεδομένων από το data frame df --- df[ 3, 2 ] # Επιλογή της τιμής της 3ης γραμμής και 2ης στήλης (30) df[ 3, "Ages" ] # Επιλογή της τιμής της 3ης γραμμής στη στήλη "Ages" (30) df[ 3, ] # Επιλογή ολόκληρης της 3ης γραμμής df[ , 2 ] # Επιλογή όλων των τιμών της 2ης στήλης df[ , "Ages" ] # Επιλογή όλων των τιμών της στήλης "Ages" df[ c(1,3), c(1,3) ] # Επιλογή των γραμμών 1 & 3 και των στηλών 1 & 3 # Πρόσβαση στη στήλη "Names" μέσω του $ df$Names # Βοήθεια για τη συνάρτηση matrix ?matrix # --- Δημιουργία πίνακα (matrix) με ορισμένα δεδομένα --- mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3"))) mdat # Εμφάνιση του πίνακα # Δημιουργία νέου matrix με διαφορετική κατανομή των τιμών (byrow = FALSE) matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = FALSE, dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3"))) # Ανάκτηση των ονομάτων των στηλών και των γραμμών του πίνακα colnames(mdat) rownames(mdat) # Αλλαγή των ονομάτων των στηλών και των γραμμών colnames(mdat) <- c("First", "Second", "Third") rownames(mdat) <- c("One", "Two") # Αλλαγή του ονόματος της 2ης στήλης colnames(mdat)[2] <- "NewName" # --- Επιλογές δεδομένων από τον πίνακα --- mdat[ 1, 2 ] # Επιλογή τιμής της 1ης γραμμής και 2ης στήλης mdat[ 1, "First" ] # Επιλογή τιμής της 1ης γραμμής και στήλης "First" mdat[ 1, ] # Επιλογή ολόκληρης της 1ης γραμμής mdat[ , 2 ] # Επιλογή όλων των τιμών της 2ης στήλης mdat[ , "First" ] # Επιλογή όλων των τιμών της στήλης "First" mdat[ c(1,1), c(1,3) ] # Επιλογή συγκεκριμένων στοιχείων # --- Δημιουργία λίστας --- list1 <- list(Names,Ages,Gender) # Δημιουργία λίστας με τα διανύσματα names(list1) <- c("Names","Ages","Gender") # Ανάθεση ονομάτων στη λίστα # Δημιουργία λίστας με διαφορετικές δομές δεδομένων list2 <- list(Names= c("Anna","Giorgos"),Ages=c(10,20,30,40,50,60,70),Gender=c("F","M","M","F")) # Πρόσβαση σε στοιχεία της λίστας list2$Names # Εμφάνιση των ονομάτων list2[2] # Επιστρέφει ένα λίστα με το στοιχείο 2 (Ages) mean(list2[2]) # Σφάλμα! Προσπαθούμε να πάρουμε μέσο όρο από λίστα list2[[2]] # Σωστός τρόπος πρόσβασης στο στοιχείο Ages mean(list2[[2]]) # Υπολογισμός του μέσου όρου των ηλικιών mean(list2$Ages) # Εναλλακτικός τρόπος υπολογισμού του μέσου όρου # Πρόσβαση σε συγκεκριμένο στοιχείο της λίστας list2$Names[2] # Αλλαγή του δεύτερου στοιχείου της λίστας Names list2$Names[2] <- "Maria" # --- Ανάλυση δεδομένων του mtcars dataset --- mydata <- mtcars # Αποθήκευση του dataset mtcars στη μεταβλητή mydata nrow(mydata) # Επιστροφή του αριθμού των γραμμών ncol(mydata) # Επιστροφή του αριθμού των στηλών # Βρόχος for που εκτυπώνει τις τιμές του mpg αν είναι πάνω από 20 for (i in 1:nrow(mydata)) { if (mydata$mpg[i] > 20) { print(mydata$mpg[i]) print(i) } } # Βρόχος for που ελέγχει την ιπποδύναμη (hp) και εκτυπώνει μήνυμα for ( i in 1:nrow(mydata)) { if ( mydata$hp[i] > 200) { print(paste("The car with the name", rownames(mydata)[i], "has more than 200 hp")) cat("The car with the name", rownames(mydata)[i], "has more than 200 hp", "\n") } else { print(paste("The car with the name", rownames(mydata)[i], "has less than 200 hp")) cat("The car with the name", rownames(mydata)[i], "has less than 200 hp", "\n") } } # Βρόχος for με τρεις περιπτώσεις ελέγχου ιπποδύναμης for ( i in 1:nrow(mydata)) { if ( mydata$hp[i] > 200) { cat("The car with the name", rownames(mydata)[i], "has more than 200 hp", "\n") } else if ( mydata$hp[i] > 100 & mydata$hp[i] < 200) { cat("The car with the name", rownames(mydata)[i], "has more than 100 hp", "\n") } else { cat("The car with the name", rownames(mydata)[i], "has less than 100 hp", "\n") } } sum_fun <- function(a,b,c, add = TRUE ){ if(add==TRUE){ sumAll <- a+b+c cat("Το αθροισμα ειναι : ",sumAll, "\n") } else { sumAll <- a*b*c cat("Ο πολλαπλασιασος ειναι : ",sumAll, "\n") } } sum_fun(10,20,30,add = TRUE) sum_fun(10,20,30,add = FALSE) ############## Shiny APP # Φόρτωση της βιβλιοθήκης shiny library(shiny) # UI - Γραφικό περιβάλλον ui <- fluidPage( titlePanel("Απλός Υπολογιστής"), sidebarLayout( sidebarPanel( numericInput("num1", "Πρώτος αριθμός:", value = 0), numericInput("num2", "Δεύτερος αριθμός:", value = 0), selectInput("operation", "Επιλογή πράξης:", choices = c("Πρόσθεση" = "+", "Αφαίρεση" = "-", "Πολλαπλασιασμός" = "*", "Διαίρεση" = "/")), actionButton("calculate", "Υπολόγισε") ), mainPanel( h3("Αποτέλεσμα:"), textOutput("result") ) ) ) # Server - Επεξεργασία δεδομένων server <- function(input, output) { observeEvent(input$calculate, { result <- switch(input$operation, "+" = input$num1 + input$num2, "-" = input$num1 - input$num2, "*" = input$num1 * input$num2, "/" = ifelse(input$num2 == 0, "Σφάλμα: Διαίρεση με το 0", input$num1 / input$num2)) output$result <- renderText({ result }) }) } # Εκκίνηση του Shiny App shinyApp(ui = ui, server = server)