2015. július havi bejegyzések

ShinyR bevezetés

A Shiny egy az R-hez kifejlesztett keretrendszer, amellyel egyszerűen keszíthetünk dinamikus weboldalakat. További, és részletes leírás az Shiny R oldalán.

Kezdjünk egy egyszerű példával 🙂
Bővebb részletesebb leírás hamarosan 🙂

Minimum két fájl szükséges a Shiny használatához:

ui.R – user-interface: ez fogja a böngészőben megjeleníteni, amit szeretnénk
server.R – server-interface: ez végzi a szerver oldali számításokat, ami dinamikusan változik és az ui.R megjeleníti az eredményt.

A fentebbi példához tartozó R scriptek.

##### server.R #####

01
02
# shiny és a csomagok betöltése
03
# datasets (ehhez a példához innen veszük az adatokat)
04
library(shiny)
05
library(datasets)
06
 
07
# a "shinyServer" definiálása, amihez meg kell adni az in-, és output elemeket
08
# output elemként egy barplot-ot fogunk megadni
09
shinyServer(function(input, output) {
10
 
11
  # elkészítjük az ábrát, barplot-ot 
12
  # majd a renderPlot funkcióval átadjuk az output-nak
13
  output$phonePlot <- renderPlot({
14
 
15
    # Barplot készítése
16
    barplot(WorldPhones[,input$region]*1000,
17
            main=input$region,
18
            ylab="Telefonok száma",
19
            xlab="Év")
20
  })
21
})
22

##### ui.r #####

01
02
library(shiny)
03
library(datasets)
04
 
05
# Létrehozzuk az UI-it (User Interface).
06
shinyUI(
07
  fluidPage(
08
    # itt megadjuk az oldal címét
09
    titlePanel("Telefonok megoszlása"),
10
    # Oldalbár készítése
11
    sidebarLayout(
12
      # ebben az esetben az odalbárba 1 input elemet adunk meg
13
      sidebarPanel(
14
        selectInput("region", "Régió:",
15
                    # itt adjuk meg, hogy mik közül lehessen választani
16
                    choices=colnames(WorldPhones)),
17
        helpText("Data from AT&T (1961) The World's Telephones.")
18
      ),
19
 
20
      # elkészítjük a "mainPanel"-re az ábrát
21
      mainPanel(
22
        plotOutput("phonePlot")
23
      )
24
    )
25
  )
26
)
27

Adatok importálása

Adatainkat sokféleképpen importálhatjuk, ezek közül mutatunk néhányat példát.

01
02
# ha csv (comma separeted values) formátumba vannak az adatok
03
# a header=TRUE csak akkor szükséges, ha fejléc is van
04
df<-read.csv("sample.csv", header=TRUE)
05
 
06
# ha egy sima txt-ben vannak az adatok és tabulator a szeparatorunk ("\t")
07
df<read.table("sample.txt",header=TRUE,sep="\t")
08
 
09
# ha xlsx-ben tároljuk az adatokat, akkor egy lehetséges megoldás, hogy
10
# először behívjuk az XLConnect csomagot
11
# betöltjük az xlsx fájlt, majd végül az adott munkalapot
12
library(XLConnect)
13
wb<-loadWorkbook("sample.xlsx", create = FALSE)
14
df<-readWorksheet(wb, sheet = "Sheet1")
15
 
16
# ha json (JavaScript Object Notation) formátumba vannak rendezve az adatok:
17
library(rjson)
18
df<-fromJSON(file="sample.json")
19
 
20
# ha mysql adatbázisban vannak az adataink
21
# akkor a RMySQL lehet a segítségünkre
22
library(RMySQL)
23
mydb<-dbConnect(MySQL(),user="root",password="pass",dbname="sampleDB",host="localhost")
24
df<-dbReadTable(mydb, "adattabla_neve")
25

Felhasznált adatok:
sample.csv
sample.txt
sample.xlsx
sample.json

Természetesen ezek mellett még számos más lehetőség is van 🙂