R 允许用户通过CSV加载数据或使用示例数据集

R 允许用户通过CSV加载数据或使用示例数据集,r,shiny,R,Shiny,我正在构建一个闪亮的应用程序,包括 用于用户上载交易CSV的文件输入 一个action按钮,允许用户使用预构建的数据集测试应用程序(即不必加载自己的数据) 一个逐字输出,打印他们正在使用的数据集的预览,并 使用所选数据集生成的各种绘图和图表 如果用户上传一个文件,该数据集应该成为“主数据集”transactionsdataset,为应用程序的其余部分提供数据。如果他们随后单击“加载样本数据”按钮,则该数据集应变成“主”transactionsdataset。(将这一想法推广到他们之间的多次交替上

我正在构建一个闪亮的应用程序,包括

  • 用于用户上载交易CSV的
    文件输入
  • 一个
    action按钮
    ,允许用户使用预构建的数据集测试应用程序(即不必加载自己的数据)
  • 一个
    逐字输出
    ,打印他们正在使用的数据集的预览,并
  • 使用所选数据集生成的各种绘图和图表
  • 如果用户上传一个文件,该数据集应该成为“主数据集”
    transactions
    dataset,为应用程序的其余部分提供数据。如果他们随后单击“加载样本数据”按钮,则该数据集应变成“主”
    transactions
    dataset。(将这一想法推广到他们之间的多次交替上传数据并点击按钮)

    我可以按如下方式使其工作:

    # 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)
    
    #app.R
    库(数据表)
    图书馆(闪亮)
    #用户界面
    
    ui不要像评论中的建议那样使用全局变量


    使用
    reactiveValues
    。听起来您不需要这个变量是“全局的”,因为它需要与UI和其他文件共享——它只需要在服务器中是全局的,对吗?在这种情况下,您可以使用
    reactiveValues
    ,这些变量可以在服务器中的任何位置访问和设置不要像评论中的建议那样使用全局变量


    使用
    reactiveValues
    。听起来您不需要这个变量是“全局的”,因为它需要与UI和其他文件共享——它只需要在服务器中是全局的,对吗?在这种情况下,您可以使用
    reactiveValues
    ,这些变量可以在服务器中的任何位置访问和设置

    只需使用全局变量存储数据集,然后就可以重用它。请参见仅使用全局变量存储数据集,然后可以重用它。看见