Я создаю элементарное блестящее приложение. Сначала я создал фрейм данных «x» и сохранил его в своем рабочем каталоге:
x <- data.frame(a = 1:4, b = 2:5)
write.csv(x, 'x.csv', row.names = F)
В моем блеске я хотел бы:
Загрузить файл 'x.csv'
Нажмите мою кнопку действия «Нажмите здесь» и выполните несколько команд, нажав на нее.
Получите сообщение, напечатанное в самом приложении Shiny: «Загрузите файл!» если я нажму на кнопку «Нажмите здесь», забыв сначала загрузить файл.
Мой код работает, но я не могу понять, как сделать так, чтобы мое сообщение отображалось.
Мой код:
library(shiny)
ui <- fluidPage(
br(),
# User should upload file x here:
fileInput("file_x", label = h5("Upload file 'x'!")),
br(),
# Users clicks the button:
actionButton("do_it", "Click Here"),
br(),
# Print last value of the button 'do_it':
verbatimTextOutput("print_action")
)
server <- function(input, output, session) {
observeEvent(input$do_it, {
# Just a check of my button's actions:
output$print_action <- renderPrint({input$do_it})
# Validating the input - next 5 lines are not working:
# validate(
# need(
# try(is.null(input$file_x), "Load a file!")
# )
# )
# Reading in the file:
fileData <- reactive({
infile <- input$file_x
if (is.null(infile)) {
return(NULL)
}
read.csv(infile$datapath)
})
x <- fileData()
# Writing out the same file - but under a different name:
filename <- paste0("x", input$do_it, ".csv")
write.csv(x, file = filename, row.names = FALSE)
})
}
shinyApp(ui, server)