Skrolli 2017.1 - Tieteellistä laskentaa R-ohjelmointikielellä LISTAUS 1: sum_loop <- function(v) { s <- 0 for(i in 1:length(v)) { s <- s + v[i] } return(s) } v <- as.numeric(1:100000000) # sijoitetaan numerot 1..10^8 vektoriin system.time(sum(v)) # sisäinen sum()-funktio system.time(sum_loop(v)) # itse silmukalla toteutettu funktio LISTAUS 2: 01: library(dplyr) 02: library(tidyr) 03: library(ggplot2) 04: library(reshape2) 05: library(lubridate) 06: 07: df <- read.csv("skrolli.df") 08: df$date <- as.Date(df$date, format="%d/%m/%Y") # Parsi päivämääräksi 09: df$date <- floor_date(df$date, "month") # Pyöristä alas lähimpään kuukauteen 10: df.matched <- mutate(df, skrolli = grepl("^skrolli*",as.character(word)), 11: assy = grepl("^assy*|assembly*",as.character(word)), 12: trump = grepl("^trump*",as.character(word)), 13: rasp = grepl("^rasp*",as.character(word))) 14: df.summary <- df.matched %>% 15: group_by(date) %>% 16: summarise( 17: assy = sum(assy), 18: skrolli = sum(skrolli), 19: trump = sum(trump), 20: rasp = sum(rasp) 21: ) 22: ggplot(melt(df.summary, id="date"), 23: aes(x=date, y=value, colour=variable)) + 24: geom_line() + 25: scale_color_discrete("Regex", 26: breaks=c("skrolli","assy","trump","rasp"), 27: labels=c("skrolli*","assy*|assembly*","trump*","rasp*")) + 28: xlab("Aika") + ylab("Esiintymiskerrat") + 29: ggtitle("Puheenaiheita #skrolli kanavalla") 30: ggsave("sanat.pdf", width=16, height=9) LISTAUS 3: df.totals <- df %>% group_by(date) %>% summarise(count = n()) ggplot(df.totals, aes(x=date,y=count)) + geom_line() + geom_smooth(method="loess") + xlab("Aika") + ylab("Sanojen määrä") + ggtitle("#skrolli kanavan aktiivisuus") ggsave("aktiivisuus.pdf", width=16, height=9) LISTAUS 4: shinyUI(fluidPage( titlePanel("#skrolli-irc-kanavan viestin pituuden jakauma"), # Histogrammin palkin leveyden säädin sidebarLayout( sidebarPanel( sliderInput("binwidth", "Palkin leveys:", min = 1, max = 20, value = 4) ), mainPanel( plotOutput("distPlot") ) ) )) LISTAUS 5: shinyServer(function(input, output) { df = read.csv("lenghts.df") output$distPlot <- renderPlot({ # Piirrä kuvaaja p <- ggplot(df, aes(x = length)) + geom_histogram(binwidth = input$binwidth) + xlab("Pituus") + ylab("Määrä") print(p) }) })