R Language
Skinande
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
ochserver.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)
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)
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)
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.
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 paramterappFile
:
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.