R Programlama Dili etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
R Programlama Dili etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24 Eylül 2016 Cumartesi

R Web Application(Shiny)

Merhaba Arkadaşlar,

Bu yazımda, R shiny paketi  ile css,javascript,R komutları kullanılarak reactive bir raporlama arayüzü nasıl yapıldığını gösteren R kodlarımı paylaştım umarım sizlere faydalı olur. Raporlama ekranından görüntülere aşağıdaki gibidir.






R kodları

ui.R
----
library(shiny)
library(shinydashboard)
library(leaflet)
shinyUI( 
  dashboardPage(
    dashboardHeader( title=textOutput("title"),titleWidth = 300,
                     tags$li(class = "dropdown",
                             tags$a(href="https://www.r-project.org", target="_blank", 
                                    tags$img(height = "20px", alt="SBM Logo", src="r.png")
                             ))
                     
                     ),
    dashboardSidebar(uiOutput("side"),uiOutput('Side_Logout'), width = 300),
    dashboardBody(
      tags$head(tags$style(HTML('
        /* logo */
                                .skin-blue .main-header .logo {
                                background-color: #088da5;
                                }
                                
                                /* logo when hovered */
                                .skin-blue .main-header .logo:hover {
                                background-color: #9cd1db;
                                }
                                
                                /* navbar (rest of the header) */
                                .skin-blue .main-header .navbar {
                                background-color: #39a3b7
;
                                }        
                                
                                /* main sidebar */
                                .skin-blue .main-sidebar {
                                background-color:  #39a3b7
                                }
                                
                                /* active selected tab in the sidebarmenu */
                                .skin-blue .main-sidebar .sidebar .sidebar-menu .active a{
                                background-color: RGB(8,141,168);
                                color: #ffffff;

                                }
                                
                                /* other links in the sidebarmenu */
                                .skin-blue .main-sidebar .sidebar .sidebar-menu a{
                                background-color: #f9f9f9;
                                color: #000000;
                                 border: 0.9px solid #20b2aa;
                                }
                                
                                /* other links in the sidebarmenu when hovered */
                                .skin-blue .main-sidebar .sidebar .sidebar-menu a:hover{
                                background-color: RGB(8,141,168);
                                color: #ffffff;
                                }
                                /* toggle button when hovered  */                    
                                .skin-blue .main-header .navbar .sidebar-toggle:hover{
                                background-color: #9cd1db;
color: #ffffff;
                                }
                                '))),
      uiOutput("page")
    )
  )
  
)

Server.R
---
library(shiny)
library(shinydashboard)
library(shinyBS)
library(DT)
library(leaflet)
source("user.R")
source("admin.R")
my_username <- c("test","admin")
my_password <- c("test","123")
get_role=function(user){
  
  if(user=="test") {
    
    return("TEST")
  }else{
    
    return("ADMIN")
  }
}

get_ui=function(role){
  itog=list()
  if(role=="TEST"){
    itog$title=test_title
    itog$system=test_system
    itog$main=test_main
    itog$side=test_side
    return(itog)
  }else{
    itog$title=admin_title
    itog$system=admin_system
    itog$main=admin_main
    itog$side=admin_side
    return(itog)
  }
}


shinyServer(function(input, output,session) {
  
  
  
  USER <- reactiveValues(Logged = FALSE,role=NULL)
  
  
  

  data <- reactive({
    file2 <- input$file1
    if(is.null(file2)){return()}
    read.csv(file=file2$datapath,header=TRUE,sep=input$sep,stringsAsFactors =FALSE)
    
    })
  
  output$wykres <- renderPlot({
    x    <- data()[, input$xcol] 
    y    <- data()[, input$ycol] 
    z    <- data()[, input$zcol] 
    req(as.numeric(x))
    req(as.numeric(y))
    plot(x,y,data=data())
  })
  
  
  
  output$summary <- renderPrint({
    inFile <- input$file1
    if (is.null(inFile))
      return(NULL)
    summary( read.csv(inFile$datapath, header=TRUE,sep=input$sep))
  })
  
  
  observe({
    inFile<-input$file1
    print(inFile)
    if(is.null(inFile))
      return(NULL)
    dt = read.csv(inFile$datapath, sep=input$sep)
    nums <- sapply(dt, is.numeric)
    items=names(nums[nums])
    names(items)=items
    ## Decide later what to do with the data, here we just fill
    updateSelectInput(session, "xcol", choices = items)
    updateSelectInput(session, "ycol", choices = items,selected = names(dt)[2])
    updateSelectInput(session, "zcol", choices = names(dt))
  })
  
  
  output$contents <-  DT::renderDataTable({
    if(is.null(data())){
      return(NULL) 
    }

    DT::datatable(data(),extensions = 'FixedColumns',class = 'cell-border stripe table-bordered',style = 'bootstrap',
                  filter = list(position = "top", clear = TRUE),
                  options = list(
                    scrollX = TRUE,
                    autoWidth = TRUE, 
                    #fixedColumns = list(leftColumns = 2, rightColumns = 1),
                    columnDefs = list(list(width = "140px", targets = "_all"))
                    ),
                  rownames = FALSE,
                  selection = "none")
  })
  
  
  
observe({ 
    if (USER$Logged == FALSE) {
      if (!is.null(input$Login)) {
        if (input$Login > 0) {
          Username <- isolate(input$userName)
          Password <- isolate(input$passwd)
          Id.username <- which(my_username == Username)
          Id.password <- which(my_password == Password)
          if (length(Id.username) > 0 & length(Id.password) > 0) {
            if (Id.username == Id.password) {
              USER$Logged <- TRUE
              USER$role=get_role(Username)
              
            }
          } 
        }
      }
    }
  })
  
  
  
  
  observe({
    if (USER$Logged == FALSE) {
      
      output$title <- renderText({
        "R Web Application"
      })
      
      output$side <- renderUI({
        div(id = "login",
            wellPanel(textInput("userName", tags$span(style="color:RGB(54,127,169)", "Username:")),
                      tags$style(type="text/css", "#userName {text-align:center;}"),
                      passwordInput("passwd", tags$span(style="color:RGB(54,127,169)", "Password:")),
                      tags$style(type="text/css", "#passwd {text-align:center;}"),
                      br(),
                      fluidRow(
                        column(4,
                               actionButton("Login", tags$span(style="color:RGB(54,127,169)", "Login:"))
                        ),
                        column(8,
                               div(img(src="r.png",width=40, heigth=3),align = "right")
                        )
                      ))
        )

      })
      
      
      output$page <- renderUI({
        div(id="log1",img(src="data.png",width=700),align = "center")
        })
    }
    if (USER$Logged == TRUE)    {
      itog=get_ui(USER$role)
      output$title<- renderText({
        itog$title
      })
      output$system<- renderUI({
        itog$system
      })
      output$side <- renderUI({
        itog$side
      })
      output$page <- renderUI({
        itog$main
      })
    }
  })  
})

User.R
--
test_title="Decison Support System"

test_system<-list(
)

test_side=list(
  sidebarMenu(id = "tabs",
              menuItem("File Upload", icon = icon("upload"),
                       div(id="rad",
                       fileInput('file1', 'Choose file to upload',
                                 accept = c(
                                   'text/csv',
                                   'text/comma-separated-values',
                                   'text/tab-separated-values',
                                   'text/plain',
                                   '.csv',
                                   '.tsv'
                                 )
                       ))
              ),
              menuItem("Show The Seperators", icon = icon("drupal"), tabName = "dashboard",
                       div(id="rad",radioButtons('sep', 'Separator',
                                    c(Comma=',',
                                      Semicolon=';',
                                      Tab='\t'),
                                    ','))),
              menuItem("Show The Variables", icon = icon("codepen"), tabName = "widgets",
                       div(id="rad",selectInput('xcol', 'X Variable',""),
                       selectInput('ycol', 'Y Variable',""),
                       selectInput('zcol', 'Z Variable',""))
                       ),
              tags$style(type="text/css", "#rad {background-color:  #ffffff;color: #000000;
}")
  )
  
)

test_main=list(
  navbarPage(title=div(icon("jsfiddle"),"Business Intelligence"),
             tabPanel("Dashboard", icon = icon("dashboard")),
             tabPanel("Data", icon = icon("database"), DT::dataTableOutput('contents')),
             tabPanel("Grafik",icon = icon("line-chart"),
                      box(
                        title = "Histogram", status = "primary", solidHeader = TRUE,
                        collapsible = TRUE,
                        plotOutput("wykres", height = 250)
                      )),
             tabPanel("Summary",verbatimTextOutput("summary"))
  )
  ,
  div(id="back",tags$b("Development by Şükrü ERGÜNTOP")),
  tags$style(type="text/css", "#back {position:absolute;bottom:0;color:#088da5;max-width: 100%; width: 100%;}")
  )

Admin.R
--
admin_title="Decison Support System"

admin_side=list(sidebarMenu(
  menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
  menuItem("Widgets", tabName = "widgets", icon = icon("th"))
))
admin_main=list(
  
  tabItems(
    tabItem(tabName = "dashboard", list(h1("1234"),h2("234"))),
    tabItem(tabName = "widgets", list(fluidRow(column(6,numericInput("inputtest", "test", value = 0),column(6,actionButton(inputId ="test1",label ="go")))))
    )
  ))

19 Ağustos 2016 Cuma

R ile İlgili Bilinmesi Gerekenler

Soru 1: R'da dataları nasıl aggregate edersin?

Cevap 1:Bu soru için örnek bir senaryo üzerinden gidelip. R'ın içinde bulunan bir dataset'i load ederek bu datasetin içindeki dimension'lara göre measure'ları aggregate edelim.

Öncelikle bu senaryoda kullanacağımız dataset'i tanıyalım
Datanın Adı          :ChickWeight
Satır sayısı           :578
Dimension Sayısı  :4 
Dimesion Adları:
                 Weigth:Tavukların ağırlığı
                 Time:Tavukların doğumundan beri ağırlık ölçümünün yapılma aralığı
                 Chick:Tavukların uniqe ID'si
                 Diet:Tavukların beslenme seviyesi

Datayı load edelim R ortamına
data<-ChickWeight
Şimdi head() fonskiyonu ile datasetimiz ilk altı satırını getirerek datanın nasıl olduğunu görelim
head(data)

     weight Time  Chick Diet
1     42         0      1         1
2     51         2      1         1
3     59         4      1         1
4     64         6      1         1
5     76         8      1         1
6     93        10     1         1

Şimdi time'a göre aggregate edeceğimizden time'ı uniqe olarak görelim

unique(data$Time)

0  2  4  6  8 10 12 14 16 18 20 21

Datamızı da gördükten sonra aggregate() fonksiyonu ile 

a-zaman'a göre tavukların ortalama ağırlıklarını görelim

aggregate(data$weight, list(time=data$Time),mean)

Yukardaki fonksiyonun çıktısı aşağıdaki gibidir.

   time         x
1     0    41.06000
2     2    49.22000
3     4    59.95918
4     6    74.30612
5     8    91.24490
6    10   107.83673
7    12   129.24490
8    14   143.81250
9    16   168.08511
10   18  190.19149
11   20  209.71739
12   21  218.68889

b-Diet'e göre tavuklarının ağırlıklarının toplamını görelim

unique(data$Diet)

1,2,3,4

aggregate(data$weight, list(diet=data$Diet),sum)


  diet     x

1    1   22582

2    2   14714

3    3   17154

4    4   15961


Soru 2:R'da 2 data frame'i nasıl merge edebilirsin?

Dataframe=Veri tablolarının depolanması için kullanılır. Eşit uzunluktaki vektörler listesidir.
Cevap 2:R da dataframe'ler 2 şekilde merge edilebilir 1. rbind() fonksiyonu 2. cbind() fonksiyonuyla merge edilir.
a-cbind() fonksiyonu kullanılarak merge etmek
  cbind() fonksiyonu aslında dataframe'leri yan yana yazdırmaktır.
Örnek
n = c(2, 3, 5)                           //1. dataframe'in 1.kolondaki veriler
s = c("aa", "bb", "cc")              //1. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE)  //1.  dataframe 3. kolondaki veriler
df1 = data.frame(n, s, b)            //3  kolondan 1. data frame'i oluşturma

1. dataframe(df1)'in çıktısı aşağıdai gibidir.
     n  s     b
1   2  aa  TRUE
2   3  bb FALSE

3   5  cc  TRUE


n1 = c(1, 2, 4)                         //2. dataframe'in 1.kolondaki veriler
s1 = c("ee", "ff", "gg")             //2. dataframe'in 2. kolondaki veriler
b1 = c(TRUE, FALSE, TRUE) //2. dataframe'in 2. kolondaki veriler
df2 = data.frame(n1, s1, b1)      //3  kolondan 2. data frame'i oluşturma

2. dataframe(df2)'in çıktısı aşağıdai gibidir.
     n  s     b
1   1  ee  TRUE
2   2  ff   FALSE

3   4  gg  TRUE

df3<-cbind(df1,df2)

2  dataframe'in  merge edilmesiden sonra ortaya çıkan dataframe'in(df3)'in çıktısı aşağıdai gibidir.

       n   s     b         n1 s1    b1
1     2  aa   TRUE   1   ee  TRUE
2     3  bb   FALSE 2   ff   FALSE
3     5  cc   TRUE   4   gg  TRUE

b-rbind() fonksiyonu kullanarak merge etme
   rbind() fonksiyonu aslında sql'deki union'a eşittir. Kolon isimleri aynı olan 2 dataframe'i unionlar.

Örnek

n = c(2, 3, 5)                           //1. dataframe'in 1.kolondaki veriler
s = c("aa", "bb", "cc")              //1. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE)  //1.  dataframe 3. kolondaki veriler
df1 = data.frame(n, s, b)            //3  kolondan 1. data frame'i oluşturma

n = c(1, 2, 4)                         //2. dataframe'in 1.kolondaki veriler
s = c("ee", "ff", "gg")             //2. dataframe'in 2. kolondaki veriler
b = c(TRUE, FALSE, TRUE) //2. dataframe'in 2. kolondaki veriler
df2 = data.frame(n, s, b)      //3  kolondan 2. data frame'i oluşturma

df3<-rbind(df1,df2)

2  dataframe'in  rbind() fonksiyonu ile merge edilmesiden sonra ortaya çıkan dataframe'in(df3)'in çıktısı aşağıdai gibidir.

     n   s      b
1   2  aa   TRUE
2   3  bb   FALSE
3   5  cc   TRUE
4   1  ee   TRUE
5   2  ff    FALSE
6   4  gg   TRUE

Soru 3:R'da nasıl data import edilir.

Cevap 3 :Data'yı R ortamına import etmenin 1.yolu RStudio yada R commander GUI'lerinden birini kullanılarak import etmek 2. si ise R data'ya import etme fonksiyonlarını kulanmak

Aşağıdaki ilk örnek R studio kullanılarak datayı import etmenin yolu


Şimdi ise r fonksiyonların  kullanarak dataları import etmek. Öncelikle R daki çalışma dizini, R ortamına import edilecek datanın bulunduğu konum olarak set etmek bunu aşağıdaki şekilde yapabilirsiniz.

getwd()                  //Şuanki çalışma dizinini gösterir.

setwd("file path")   //Çalışma dizini yeni path'e set etmek

Sonra aşağıdaki fonksiyonlar kullanılarak istenilen data R ortamına import edilebilir.

mydata=read.table("mydata.txt")  //txt dosyalarını okuyan fonksiyon

mydata=read.csv("mydata.csv")  //csv dosyalarını okuyan fonksiyon

mydata=read.csv("mydata.xls")  //xls dosyalarını okuyan fonksiyon

Soru 4:Matrix ve dataframea arasındaki fark nedir.

Cevap 4:Dataframe içinde  farklı data tiplerini bulundurabilir yani bir dataframe de hem integer hemde character bulunabilir ama Bir matrix aynı data tiplerini içinde bulundurabilir.farklı data tiplerini bulundurmaz.

Soru 5:Bir string'i 2 farklı stringi nasıl ayırabilirsin?

Cevap 5:Örnek string'imiz "sukru.erguntop" bu string "." dan önce ve sonrasını ayıralım

strsplit("sukru.erguntop",split=".")  //strsplit ile ayrılabilir.

Soru 6:Bir  verinin tipini nasıl öğrenebilirsin?

Cevap 6: class() fonksiyonu ile öğrenebilirsiniz. örnek olarak
x<-1
class(x)  //x in numeric olduğunu döner

x<-"sukru"
class(x)  //x in character olduğunu döner

Soru 7:attach() ve detach() fonksiyonları ne işe yarar ve aradaki fark nedir.

Ceap 7:Örnek olarak, "Expression", "Gender" ve "Subtype" olmak üzere 3 kolona sahip olan datayı R ortamına import edelim

x<-read.csv('anova.csv',header='T')

bu data'daki  kolonların datasını aşağıdaki şekilde çağırabilir.

x$Gender

 [1] m m m m m f m m f m m f m m m m f m m m m m m f m m m f m m m m f m m m m
 [38] m m m m m m m m m f m f m m m m m f m m f m m f m m m m f m m m m m m m m
 [75] m m f m m m m m f m m m m m m m m m f m m f m m f m f m m f m m f m m f m
[112] m f m m f m m m f m m m f m f m f f f f f f m f m f f f m f f f f m f m f
[149] m f f m f f f f f m f m f f m f f m f f m f f f m f f f m f f f m f f m f
[186] f f m f f m f m m f m f m f f m f f f f f m f f m f f f m m m f m m m f f
[223] f f f f f m m m f m f f m f f f m f f f m f f f f m f m f f f f m f f f m
[260] f f m f f f f f f m f f m f f f f f f m f f
Levels: f m

ama eğer attach fonksiyonu kullanılsaydı attach(x) diye gender kolonunu aşağıdaki şekilde çaırabilirdik

->Gender

 [1] m m m m m f m m f m m f m m m m f m m m m m m f m m m f m m m m f m m m m
 [38] m m m m m m m m m f m f m m m m m f m m f m m f m m m m f m m m m m m m m
 [75] m m f m m m m m f m m m m m m m m m f m m f m m f m f m m f m m f m m f m
[112] m f m m f m m m f m m m f m f m f f f f f f m f m f f f m f f f f m f m f
[149] m f f m f f f f f m f m f f m f f m f f m f f f m f f f m f f f m f f m f
[186] f f m f f m f m m f m f m f f m f f f f f m f f m f f f m m m f m m m f f
[223] f f f f f m m m f m f f m f f f m f f f m f f f f m f m f f f f m f f f m
[260] f f m f f f f f f m f f m f f f f f f m f f
Levels: f m

Eğer attach etmeden yukardaki şekilde çağırsaydık aşağıdaki hatayı alıyor olurduk.
Error: object 'Gender' not found

Datayı tekrar x$Gender şeklinde çağırmak için detach(x) fonksiyonu kullanmak  gerekir.


Soru 8:R'da veri tipi dönüşümlerini açıklayın.

Cevap 8: Data'nın tipini doğrulamak için is.foo, data tipini değiştirmek için ise as.foo kullanılır.

Örnek
x<-1
is.numeric(x)   //Bu fonsiyon x'in numeric olup olmadığını soruyor. X numeric olduğundan True değeri döner.

Diğer örnek ise x'i numeric'ten character'e dönüştürme

as.character(x)  //X'i character'e döndürdü.

Soru  9: Birden fazla string'i nasıl birleştirebilirsin?

Cevap 9:  paste() fonksiyonu ile birleştirilebilir. Aşağıdaki örnekte gösterilmektedir.

paste("Data","Science","in","R","Programming",sep="_") 

Çıktısı aşağıdaki gibidir.

 "Data_Science_in_R_Programming"

Soru 10:R da web application yapmak için kullanılan paket hangisidir. 

Cevap 10: Shiny paketidir. İçinde bulundurduğu fonksiyonlar ile interactive bir web application yapılabilir.

örnek bir shiny uygulaması



Soru 11: R'da istatistiksel analizler ve grafikler oluşturmak için kullanılan veri yapıları nelerdir.

Cevap 11:
a-Vectors:R'daki temel veri tipidir. Atomic vektör ve list olmak üzere 2'ye ayrılmaktadır. Atomik vektör ve list arasındaki fark; Atomik vektörde tüm veri tipleri aynı olmalıdır ve genellikle c() fonksiyonu ile oluşturulur. Örnek olarak aşağıda gösterilemektedir.
x<-c(1,2,3)
List'te ise aynı olmak zorunda değildir ve genellikle list() fonksiyonu ile oluşturulmaktadır.
x<-list(1,2,3)

b-Matrix:Örnek bir matrix kullanımı aşağıda gösterilmektedir.
a<-matrix(1:6,ncol=3, nrow=2)
Çıktısı aşağıdaki gibidir.
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
c-Array:Örnek bir array kullanımı aşağıda gösterilmektedir.
b <- array(1:12, c(2, 3, 2))
Çıktısı aşağıdaki gibidir.
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

d-Dataframe:Daha önceki bölümde değinildiği için bu bölümde anlatılmayacak

Soru 12: R'da harici dosya(external file) olmadan bir tablo nasıl create edilebilir. 

myTable = data.frame() //  myTable adında bir dataframe oluşturulmalı

edit(myTable)              //Oluşturulan dataframe edit() fonksiyonu ile istenildiği şekilde bir tablo oluşturulabilir.

Soru 13:R'da kaç tane sıralama algoritması var?

Cevap 13:Aşağıda görüldüğü üzere 5 tane sıralama algoritması var

-Buble Sort
-Selection Sort
-Merge Sort
-Quic Sort
-Bucket Sort 

Soru 14:R'da data'yı nasıl sıralarsın?

Cevap 14:Aşağıdaki örnekte R üzerinde bulunan "mtcars" verisi kullanılarak gösterilmektedir.
 attach(mtcars)
 mtcars[order(mpg),] 

16 Ağustos 2016 Salı

R shiny Ders 1

Merhabalar bu derste R'ın raporlama paketi olan Shiny paketini göreceğiz.Shiny interaktif bir web uygulaması yapmayı sağlayan R paketidir.  Shiny  paketi kullanmak için öncelikler paketi yüklememiz gerekmektedir. Bu paket incelemek için kullanılan ortam Rstudio IDE'dir.  RStudio IDE'yi RStudio'nın sitesinden indirebilirsiniz.

install.packages("shiny")

install.packages("shinydashboard")

Temel bir dashboard 3 kısımdan oluşmaktadır. Bunlar header, sidebar ve body'dir.
Şimdi shiny, shindashboard paketi ile ilk örneğimiz yapalım. Yeni bir script oluşturalım ve ismine app diyelim. Bu app script'inin içine aşağıdaki kodu yazalım
## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)

server <- function(input, output) { }

shinyApp(ui, server)

Yukardaki kodların sırasıyla üstünden geçelim

library(shiny)
library(shinydashboard)
Yukardaki paketler dashboard için kullanacağımız fonksiyonları içermektedir.dolayısıyla fonksiyonları kullanmadan önce gerekli kütüphanlerimizi tanımlamamız gerekmektedir.


ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)
Yukardaki kodlarla ise kullanıcı tarafında görünecek arayüz tasarlanmaktadır. Bu arayüzün nasıl bir görselliğe sahip olacağı bu kısımda belirlenir


server <- function(input, output) { }
Server tarafında çalışacak fonksiyonlar yazılır.


shinyApp(ui, server)
Son olarak oluşturulan arayüz ve serverın localhost'a çalıştırılması yukardaki kodla gerçekleşmektedir.

Yukarda oluşturulan tüm scriptin çalıştırılması sonucu aşağıdaki ekran karşımıza gelmektedir.


## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)

server <- function(input, output) { }

shinyApp(ui, server)


Yukardaki kodları tek bir r scriptine yazmak zorunda değilsiniz . aşağıdaki şekilde yapabilirsiniz

Folder
        ui.r             :User interface'in oluşuturulduğu script dosyası)
        Server.r       :Server taradında çalışacak fonksiyonların yazıldığı script dosyası)
        Global.R     :Hem ui.r hemde server.r  de kullanılacak değişkenlerin tanımlandığı script dosyası
        www           :image,css ve javasccriptlerin bulunduğu klasör




Şimdi örneğimizi yukardaki yapıya getirelim

## ui.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)

## server.R ##
library(shiny)
library(shinydashboard)

server <- function(input, output) { }

Şimdi örneğimize bir textinput ekleyelim


## ui.R ##
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title='DENEME'),
  dashboardSidebar(textInput("textid","Ad")),
  dashboardBody(textOutput("text"))
)

## server.R ##
library(shiny)
library(shinydashboard)
server <- function(input, output) {
  output$text <- renderText(input$textid)

}


Yukardaki kodla aşağıda görüldüğü üzere text'e ne yazarsam dinamik olarak yan tarafta ta yazar.



27 Haziran 2015 Cumartesi

Aşağdaki sunumda R Programlamanın tarihçesi, Yaygın kullanım alanları, Systanx'ından, alternatifleri ile karşılaştırılması, R paketlerinin bazılarından bahsedilmiştir.