сохранить R объектов в фоновом режиме, используя R Shiny - PullRequest
1 голос
/ 25 марта 2020

Я хочу сохранить R-объект с помощью R-Shiny-App. С помощью обычной кнопки загрузки вы можете сохранять файлы, но каждый раз должны определять каталог. Я хочу сохранить R-объекты, не спрашивая каталог.

я попробовал наивный способ, используя реактивную кнопку, не работает

Например, чтобы сохранить этот вектор внутри реактивного значения ...

library(shiny)

vec <- c(1,2,3,4)

ui <- fluidPage(
  actionButton("saveData", "Save")
)

server <- function(input,output,session) {


  vec <- reactive({
    vec <- c(1,2,3,4)
    vec
  })

  observeEvent(input$saveData,{
    save(vec(), file = 'vec.RData')
  })

}
shinyApp(server = server, ui = ui)



та же проблема, пока пытаюсь создавать и удалять папки. Я полагаю, что проблема заключается в функции eventReactive (), потому что она пытается выдать объект, но не может. Есть ли другая функция, которую я мог бы использовать?

1 Ответ

0 голосов
/ 25 марта 2020

Действительно, это не работает с eventReactive. Вместо этого используйте observeEvent. Более того, в функции save мы предоставляем объекты для сохранения, но по именам . Если вы сделаете save(vec(), file = "vec.RData"), то функция save будет искать объект с именем vec(). Поэтому вы должны сделать что-то вроде:

  observeEvent(input$saveData,{
    x <- vec()
    save(x, file = 'vec.RData')
  })

Я бы порекомендовал saveRDS для сохранения одного объекта R.

...