Моя цель - сделать загрузку реагирующей на изменения в текстовом поле имени файла.При использовании следующего решения имя загруженного файла не меняется с первого ввода имени файла.
Пример:
library("shiny")
ui <- fluidPage(
fluidRow(
column(1, offset=1,
downloadButton(outputId="save",
label="Save")
),
column(2, offset=1,
textInput(inputId="name",
label="Filename:")
)
)
)
server <- function(input, output, session) {
observe({
data <- data.frame(x=1:50, y=rnorm(50))
serverDownloadCSV <- function(name, data) {
dl <- downloadHandler(
filename=function() {
if (name == "") {
paste("Untitled", "csv", sep=".")
} else {
paste(name, "csv", sep=".")
}
},
content = function(file) {
write.table(data, file, row.names=FALSE, append=TRUE, sep=",")
}
)
return(dl)
}
output$save <- serverDownloadCSV(name=input$name, data=data)
})
}
runApp(appDir=list(ui=ui, server=server), launch.browser=TRUE)
Однако, если у меня нет downloadHandler
в качестве отдельной функциино в следующем виде:
output$save <- downloadHandler(
filename=function() {
if (input$name == "") {
paste("Untitled", "csv", sep=".")
} else {
paste(input$name, "csv", sep=".")
}
},
content = function(file) {
write.table(data(), file, row.names=FALSE, append=TRUE, sep=",")
}
)
, тогда он работает как задумано.Что мне нужно сделать, чтобы сохранить отдельную функцию?