Tworzenie obiektów wyjściowych
Budowanie danych wyjściowych w Shiny opiera się na trzech zasadach:
Utwórz obiekt za pomocą odpowiedniej funkcji
render*().Zapisz wynik funkcji renderującej na liście
output, która jest parametrem funkcji serwera. Konkretnie – zapisz go dooutput$<outputId>, aby zastąpić placeholder wyjściowy w UI o identyfikatorzeoutputId.Jeśli dane wyjściowe zależą od wartości zmodyfikowanych przez użytkownika, możesz uzyskać do nich dostęp za pomocą parametru
inputfunkcji serwera. Wywołanieinput$<inputId>zawsze zwraca bieżącą wartość pola wejściowego o identyfikatorzeinputId.
To ćwiczenie jest częścią kursu
Studia przypadków: tworzenie aplikacji webowych w Shiny w R
Instrukcje do ćwiczenia
Otrzymujesz aplikację Shiny z w pełni działającą częścią UI. Twoim zadaniem jest zbudowanie wszystkich obiektów wyjściowych. Konkretnie:
- Utwórz wykres ze zbioru danych
carsw placeholderze wyjściowym z identyfikatorem "cars_plot" (linia 23). - W wyjściu tekstowym "greeting" wyrenderuj tekst powitalny w postaci "Hello NAME", gdzie NAME to wartość pola wejściowego name (linia 28).
- W wyjściu "iris_table" wyświetl tabelę zawierającą pierwsze n wierszy zbioru danych
iris, gdzie n to wartość pola wejściowego numerycznego (linia 33).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Load the shiny package
library(shiny)
# Define UI for the application
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("name", "What is your name?", "Dean"),
numericInput("num", "Number of flowers to show data for",
10, 1, nrow(iris))
),
mainPanel(
textOutput("greeting"),
plotOutput("cars_plot"),
tableOutput("iris_table")
)
)
)
# Define the server logic
server <- function(input, output) {
# Create a plot of the "cars" dataset
output$cars_plot <- render___({
plot(cars)
})
# Render a text greeting as "Hello "
output$greeting <- ___({
paste("Hello", ___)
})
# Show a table of the first n rows of the "iris" data
___ <- ___({
data <- iris[1:input$num, ]
data
})
}
# Run the application
shinyApp(ui = ui, server = server)