#r #shiny
#r #блестящий
Вопрос:
Как хранить и повторно использовать реактивные данные для создания нескольких выходных данных в Shiny?
Я хочу создать другой вывод, который отображает информацию, такую как наиболее прибыльная пробная версия или процентное количество раз, когда игрок получил BJ от этой симуляции. Код использует входные данные для запуска моей функции simulateBlackjack, которая является случайной. Я думаю, что мне нужно сохранить результаты simulateBlackjack(), чтобы я мог использовать данные, как я могу это сделать?
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("Blackjack 'Perfect Strategy' Simulation"),
sidebarLayout(
sidebarPanel(
numericInput("wager", "How much to wager per hand?", 5,
1, 1000),
sliderInput("hands",
"Number of hands to play:",
min = 1,
max = 1000,
value = 50),
sliderInput("decks",
"Number of decks:",
min = 4,
max = 8,
value = 8),
img(src = "https://wizardofodds.com/blackjack/images/bj_4d_h17.gif", width = 225, height = 600)
),
mainPanel(
dataTableOutput(outputId = "simResults"),
verbatimTextOutput(outputId = "analysis")
)
)
)
server <- function(input, output) {
reactData <- reactive({simulateBlackjack(input$wager,input$hands,input$decks)})
#data <- reactData()
output$simResults <- DT::renderDataTable({
datatable(reactData(), rownames = TRUE, options = list(pageLength = 13, lengthChange = FALSE))
})
# output$analysis <- renderPrint(max(data[13,]))
}
# Run the application
shinyApp(ui = ui, server = server)
Комментарии:
1. Это не reprex, пожалуйста, создайте функцию, которая, по крайней мере, дает результат вместо блэкджека
Ответ №1:
Попробуйте это:
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("Blackjack 'Perfect Strategy' Simulation"),
sidebarLayout(
sidebarPanel(
numericInput("wager", "How much to wager per hand?", 5,
1, 1000),
sliderInput("hands",
"Number of hands to play:",
min = 1,
max = 1000,
value = 50),
sliderInput("decks",
"Number of decks:",
min = 4,
max = 8,
value = 8),
img(src = "https://wizardofodds.com/blackjack/images/bj_4d_h17.gif", width = 225, height = 600)
),
mainPanel(
dataTableOutput(outputId = "simResults"),
verbatimTextOutput(outputId = "analysis")
)
)
)
server <- function(input, output) {
reactData <- reactive({
req(input$wager,input$hands,input$decks)
simulateBlackjack(input$wager,input$hands,input$decks)
})
output$simResults <- DT::renderDataTable({
datatable(reactData(), rownames = TRUE, options = list(pageLength = 13, lengthChange = FALSE))
})
output$analysis <- renderPrint(
max(reactData()[13,])
)
}
# Run the application
shinyApp(ui = ui, server = server)