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 –