【问题标题】:save R objects in the background using R Shiny使用 R Shiny 在后台保存 R 对象
【发布时间】:2020-07-05 19:02:24
【问题描述】:

我想使用 R-Shiny-App 保存 R-object。使用普通的下载按钮可以保存文件,但每次都必须定义一个目录。我想在不询问目录的情况下保存 R-Objects。

我尝试了使用响应式按钮的幼稚方式,但不起作用

例如,将此向量保存在反应值中...

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() 因为它试图给出一个对象,但不能。有没有其他功能可以使用?

【问题讨论】:

  • 您好,请附上reproducible example,这样会更容易为您提供帮助
  • 我不明白为什么它不能与 eventReactive 一起使用,但改用 observeEvent 会更合适。无论如何,您应该编辑您的问题以包含一个最小的可重现示例,以便我们可以准确地看到您所做的事情。

标签: r shiny directory save reactive


【解决方案1】:

确实,这不适用于eventReactive。请改用observeEvent。此外,在save 函数中,我们提供了要保存的对象,但按其名称。如果您执行save(vec(), file = "vec.RData"),则save 函数将搜索名为vec() 的对象。所以你应该这样做:

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

我会推荐 saveRDS 来保存单个 R 对象。

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 2017-02-23
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多