Ваша create_file
функция является реактивной.Реактивные функции оценивают только тогда, когда 1) требуется их выход, и 2) их входы изменились.Похоже, что ни один из них здесь не применим.
Что вы можете сделать, это переместить содержимое create_file
в ваш обработчик загрузок.content
должен получить функцию, которая возвращает файл, но функция может сначала делать другие вещи.Поэтому попробуйте следующее:
server <- function(input, output, session){
data_gen <- reactive({
d1= data.frame(...)
d2= data.frame(...)
result <- list(d1=d1, d2=d2)
return(result)
})
output$downloadData <- downloadHandler(
filename = function() {"input.txt"},
content = function(file) {
# save non-user copy
sink("/srv/shiny-server/S3/file.txt",append = TRUE)
print(data_gen()$d1)
print(data_gen()$d2)
sink()
# copy to be returned for user
sink(file,append = TRUE)
print(data_gen()$d1)
print(data_gen()$d2)
sink()
})
}