シャイニーはかなりスマートです。
いつ何かをやり直す必要があるときとしていないときは分かっています。これはShinyがファイルをリロードする必要がないことを知っている場合で、パラメータを変更してもリロードを促さない。
library(shiny)
options(shiny.maxRequestSize = 9*1024^2)
server <- shinyServer(function(input, output) {
data <- eventReactive(input$go, {
validate(
need(input$file1, "Choose a file!")
)
inFile <- input$file1
read.csv(inFile$datapath, header = input$header,
sep = input$sep, quote = input$quote)
})
output$plot <- renderPlot({
set <- data()
plot(set[, 1], set[, 2] * input$param)
})
})
ui <- shinyUI(fluidPage(
titlePanel("Uploading Files"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose file to upload',
accept = c(
'text/csv',
'text/comma-separated-values',
'text/tab-separated-values',
'text/plain',
'.csv',
'.tsv'
)
),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
','),
radioButtons('quote', 'Quote',
c(None='',
'Double Quote'='"',
'Single Quote'="'"),
'"'),
tags$hr(),
p('If you want a sample .csv or .tsv file to upload,',
'you can first download the sample',
a(href = 'mtcars.csv', 'mtcars.csv'), 'or',
a(href = 'pressure.tsv', 'pressure.tsv'),
'files, and then try uploading them.'
),
actionButton("go", "Load File and plot"),
sliderInput("param", "Parameter", 0, 1, value = 0.1, step = 0.1, animate = TRUE)
),
mainPanel(
tableOutput('contents'),
plotOutput("plot")
)
)
))
shinyApp(ui = ui, server = server)
ありがとうございます。私は考えを得ると思う。しかし、あなたのコードはeventReactiveコールを持っていないようです。 – athlonshi