0
我建立一个闪亮的应用程序,包括允许用户通过CSV加载其数据或使用样本数据集
- 一个
fileInput
用户上传CSV交易 - 的
actionButton
,让的用户使用预先构建的数据集测试应用程序(即无需加载自己的数据)。 - 一个
verbatimTextOutput
,打印他们使用的数据集和 - 各种情节和图表的预览内置使用他们选择的数据集
如果用户上传文件,该数据集应该成为“高手” transactions
数据集来提供应用程序的其余部分。如果他们再点击“加载样本数据”按钮,即数据集应该变成“主”transactions
数据集。 (外推这个想法告诉了他们之间的多次交替上传数据,点击按钮)
我能得到这个工作如下:
# app.R
library(data.table)
library(shiny)
# UI
ui <- shinyUI(fluidPage(
fileInput(inputId='fi_file', label='Choose CSV File', accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
actionButton(inputId="ab_loadSampleTransactions", label="Load Sample Transactions"),
verbatimTextOutput("vto_transactions")
))
# Server
server <- shinyServer(function(input, output) {
# When the user uploads a file, print it
observeEvent(input$fi_file, {
transactions <- read.csv(input$fi_file$datapath)
output$vto_transactions <- renderPrint(transactions)
})
# When the user clicks the button for sample transactions, print them
observeEvent(input$ab_loadSampleTransactions, {
transactions <- data.table(ID=c(1,2,3), Amount=c(100, 150, 125))
output$vto_transactions <- renderPrint(transactions)
})
# More logic involving the transactions dataset
# ...
})
# Run the application
shinyApp(ui = ui, server = server)
然而,这是低效的,因为它需要我来加载transactions
数据集两次以显示它和用它做未来的逻辑。我想我需要在这里做一些反应,但我无法弄清楚,因为我有两种单独的方法来加载数据。帮帮我?
只需使用全局变量来存储数据集,然后就可以重用它。见http://stackoverflow.com/questions/20333399/are-there-global-variables-in-r-shiny –