Sök…


Skapa en app

Shiny är ett R- paket utvecklat av RStudio som gör det möjligt att skapa webbsidor för att interaktivt visa resultaten av en analys i R.

Det finns två enkla sätt att skapa en Shiny-app:

  • i en .R fil, eller
  • i två filer: ui.R och server.R .

En blank app är uppdelad i två delar:

  • ui : Ett användargränssnittsskript som styr programmets layout och utseende.
  • server : Ett serverscript som innehåller kod för att låta applikationen reagera.

En fil

library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
    # Application title
    titlePanel("Hello World!")
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Två filer

Skapa ui.R fil

library(shiny)

# Define UI for application
shinyUI(fluidPage(  
  # Application title
  titlePanel("Hello World!")
))

Skapa server.R fil

library(shiny)

# Define server logic
shinyServer(function(input, output){})

Radio knapp

Du kan skapa en uppsättning radioknappar som används för att välja ett objekt från en lista.

Det är möjligt att ändra inställningarna:

  • vald: Det ursprungligen valda värdet (tecken (0) utan val)
  • inline: horisontellt eller vertikalt
  • bredd

Det är också möjligt att lägga till HTML.

library(shiny)

ui <- fluidPage(    
  radioButtons("radio", 
               label = HTML('<FONT color="red"><FONT size="5pt">Welcome</FONT></FONT><br> <b>Your favorite color is red ?</b>'),
               choices = list("TRUE" = 1, "FALSE" = 2),
               selected = 1,
               inline = T,
               width = "100%"),      
  fluidRow(column(3, textOutput("value")))) 


server <- function(input, output){
  output$value <- renderPrint({
    if(input$radio == 1){return('Great !')}
     else{return("Sorry !")}})}

shinyApp(ui = ui, server = server)

ange bildbeskrivning här

Markera kryssrutan

Skapa en grupp kryssrutor som kan användas för att växla flera val oberoende. Servern tar emot ingången som en teckenvektor för de valda värdena.

library(shiny)

ui <- fluidPage(    
  checkboxGroupInput("checkGroup1", label = h3("This is a Checkbox group"), 
                 choices = list("1" = 1, "2" = 2, "3" = 3),
                 selected = 1),
  fluidRow(column(3, verbatimTextOutput("text_choice")))
  ) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(paste0("You have chosen the choice ",input$checkGroup1))})
} 

shinyApp(ui = ui, server = server)

ange bildbeskrivning här

Det är möjligt att ändra inställningarna:

  • etikett: titel
  • val: valda värden
  • vald: Det ursprungligen valda värdet (NULL för inget val)
  • inline: horisontellt eller vertikalt
  • bredd

Det är också möjligt att lägga till HTML.

Välj ruta

Skapa en väljlista som kan användas för att välja en enda eller flera objekt från en lista med värden.

library(shiny)

ui <- fluidPage(    
  selectInput("id_selectInput", 
          label = HTML('<B><FONT size="3">What is your favorite color ?</FONT></B>'), 
          multiple = TRUE,
          choices = list("red" = "red", "green" = "green", "blue" = "blue", "yellow" = "yellow"), 
          selected = NULL),
  br(), br(),
  fluidRow(column(3, textOutput("text_choice")))) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(input$id_selectInput)})
}

shinyApp(ui = ui, server = server)

ange bildbeskrivning här

Det är möjligt att ändra inställningarna:

  • etikett: titel
  • val: valda värden
  • vald: Det ursprungligen valda värdet (NULL för inget val)
  • multipel: SANN eller FALSE
  • bredd
  • storlek
  • selectize: TRUE eller FALSE (för användning eller selectize.js, ändra displayen)

Det är också möjligt att lägga till HTML.

Starta en Shiny app

Du kan starta en applikation på flera sätt beroende på hur du skapar din app. Om din app är indelad i två filer ui.R och server.R eller om all din app finns i en fil.

1. Två filer app

Dina två filer ui.R och server.R måste vara i samma mapp. Du kan sedan starta din app genom att köra i shinyApp() -funktionen och genom att köra sökvägen till katalogen som innehåller Shiny-appen.

shinyApp("path_to_the_folder_containing_the_files")  

Du kan också starta appen direkt från Rstudio genom att trycka på Kör app- knappen som visas på Rstudio när du en ui.R eller server.R fil öppnar.
ClicktoRun

Eller så kan du helt enkelt skriva runApp() på konsolen om din arbetskatalog är Shiny App-katalogen.

2. En filapp

Om du skapar din i en R fil kan du också starta den med shinyApp() .

  • insidan av din kod:
library(shiny)

ui <- fluidPage() #Create the ui
server <- function(input, output){} #create the server

shinyApp(ui = ui, server = server) #run the App
  • i konsolen genom att lägga till sökväg till en .R fil som innehåller Shiny-applikationen med paramter appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Kontrollera widgetar

Fungera widget
actionButton Åtgärdsknapp
checkboxGroupInput En grupp kryssrutor
checkboxInput En enda kryssruta
dateInput En kalender som hjälper till att välja datum
dateRangeInput Ett par kalendrar för att välja ett datumintervall
fileInput En guide för överföring av filöverföringar
Hjälp text Hjälptext som kan läggas till i en inmatningsformulär
numericInput Ett fält för att ange siffror
radioknappar En uppsättning radioknappar
selectInput En ruta med val att välja mellan
sliderInput En skjutreglage
skickaknapp En skicka-knapp
Textinmatning Ett fält för att ange text
library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
  titlePanel("Basic widgets"),
  
  fluidRow(
    
    column(3,
           h3("Buttons"),
           actionButton("action", label = "Action"),
           br(),
           br(), 
           submitButton("Submit")),
    
    column(3,
           h3("Single checkbox"),
           checkboxInput("checkbox", label = "Choice A", value = TRUE)),
    
    column(3, 
           checkboxGroupInput("checkGroup", 
                              label = h3("Checkbox group"), 
                              choices = list("Choice 1" = 1, 
                                             "Choice 2" = 2, "Choice 3" = 3),
                              selected = 1)),
    
    column(3, 
           dateInput("date", 
                     label = h3("Date input"), 
                     value = "2014-01-01"))   
  ),
  
  fluidRow(
    
    column(3,
           dateRangeInput("dates", label = h3("Date range"))),
    
    column(3,
           fileInput("file", label = h3("File input"))),
    
    column(3, 
           h3("Help text"),
           helpText("Note: help text isn't a true widget,", 
                    "but it provides an easy way to add text to",
                    "accompany other widgets.")),
    
    column(3, 
           numericInput("num", 
                        label = h3("Numeric input"), 
                        value = 1))   
  ),
  
  fluidRow(
    
    column(3,
           radioButtons("radio", label = h3("Radio buttons"),
                        choices = list("Choice 1" = 1, "Choice 2" = 2,
                                       "Choice 3" = 3),selected = 1)),
    
    column(3,
           selectInput("select", label = h3("Select box"), 
                       choices = list("Choice 1" = 1, "Choice 2" = 2,
                                      "Choice 3" = 3), selected = 1)),
    
    column(3, 
           sliderInput("slider1", label = h3("Sliders"),
                       min = 0, max = 100, value = 50),
           sliderInput("slider2", "",
                       min = 0, max = 100, value = c(25, 75))
    ),
    
    column(3, 
           textInput("text", label = h3("Text input"), 
                     value = "Enter text..."))   
  )
  
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

felsökning

debug() och debugonce() fungerar inte bra i samband med de flesta Shiny debugging. Men uttalanden från browser() infogade på kritiska platser kan ge dig mycket insikt i hur din Shiny-kod fungerar (inte). Se även: Felsökning med browser()

Showcase-läge

Showcase-läget visar din app tillsammans med koden som genererar den och markerar kodrader på server.R när den kör dem.

Det finns två sätt att aktivera Showcase-läge:

  • Starta Shiny app med argumentet display.mode = "showcase", t.ex. runApp("MyApp", display.mode = "showcase") .
  • Skapa fil som heter DESCRIPTION i din Shiny app-mapp och lägg till den här raden i den: DisplayMode: Showcase .

Reaktiv loggvisualisator

Reactive Log Visualizer tillhandahåller ett interaktivt webbläsarbaserat verktyg för att visualisera reaktiva beroenden och körning i din applikation. För att aktivera Reactive Log Visualizer, kör options(shiny.reactlog=TRUE) i R-konsolen och eller lägg till den raden i din server.R-fil. Starta Reactive Log Visualizer genom att trycka på Ctrl + F3 i Windows eller Command + F3 på Mac när din app körs. Använd vänster- och högerpiltangenter för att navigera i Reactive Log Visualizer.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow