Вот рабочий пример. Я также показываю таблицу данных, которые создаются при обновлении numericInput. Это должно сохранить в вашем рабочем каталоге. Обратите внимание, что my_df
генерируется с eventReactive
, потому что это должно быть реактивное значение (оно должно измениться, когда мы изменяем numericInput), тогда как write.csv
вызывается в пределах observeEvent
, потому что оно просто вызывается нажатием кнопка (то есть, он не создает никакого реактивного объекта). Надеюсь, это поможет.
library(shiny)
ui <- {
fluidPage(
fluidRow(
numericInput(
inputId = 'num_input',
label = 'Input',
value = 5),
actionButton(
inputId = 'num_input_button',
label = 'Generate df'),
actionButton(
inputId = 'write_data',
label = 'Write to csv')
),
fluidRow(
tableOutput('table')
)
)
}
server <- function(input, output, session) {
my_df <- eventReactive(input$num_input_button, {
runif(input$num_input)
})
observeEvent(input$write_data, {
write.csv(my_df(), 'random_numbers.csv')
})
output$table <- renderTable({
my_df()
})
}
shinyApp(ui, server)