r - 在 R Shiny 中,如何使用在该 observeEvent 之外的 observeEvent(按钮单击)中生成的数据?
问题描述
假设我做了一个像这样的observeEvent,我生成随机数,然后另一个将这些数字导出到csv:
observeEvent(input$generateButton, {
u = runif(input$nNumericInput)
})
observeEvent(input$exportButton, {
write.csv(data.frame(u),"randomNumbers.csv", row.names = FALSE)
})
这基本上就是我想要做的,但我正在以更复杂的方式生成数字,因为效率原因我不想为每个按钮重复。
解决方案
这是一个工作示例。我还显示了更新 numericInput 时生成的数据表。这应该保存在您的工作目录中。请注意,它my_df
是用 an 生成的eventReactive
,因为它应该是一个反应值(当我们更改 numericInput 时它应该改变),而write.csv
在 an 中调用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)
推荐阅读
- tcl - 在 Tcl 脚本中转换列表中的列
- mbtiles - 为什么 Tippecanoe 将 geojson 文件转换为 pbf 矢量切片会导致纬度/经度放置不正确?
- bash - Centos 7 - 脚本未从 init d 运行 - 手动使用&它在后台启动
- python - 使用次轴线图制作分类或分组条形图
- r - R ggplot2:如何跨子组箱线图绘制 2 组的平均线?
- r - 如何修改函数以提取 R 中的某些回归系数
- azure-devops - Azure DevOps 扩展的条件上下文菜单?
- php - 来自 github 的 PHPmailer 是否仅用于您的本地主机?
- ios - 从 Objective-C 调用 Swift 扩展函数的语法
- mongodb - MongoDB 副本集 - 次要反复关闭