如何在闪亮的应用程序中刷新Rdata对象

巴斯蒂安·赫维

我的目的是当用户确认通过闪亮警报弹出窗口重新加载数据集时刷新.Rdata对象。下面是一个小例子。在加载应用程序之前,我已经创建并保存了2个对象(DatasetNumber1DatasetNumber2),其中包含要显示的标签和数据。

启动应用程序时,DatasetNumber1由于global.R文件的缘故,我默认情况下加载对象因此,现在可以通过AND来访问test和中的data对象(这不是我的示例,而是在我的完整应用程序中)。我希望用户能够通过下拉菜单选择其他数据集,以刷新全局R对象,并最终绘制。DatasetNumber1server.Rui.R

print我在下拉列表中选择了另一个数据集后,在server.R中语句单击了Load按钮,并通过Shinyalert进行了验证,确认该下拉列表输入已更改,但该load语句未刷新R对象。

我试图在global.R脚本中直接进行响应式加载,但结果还是一样。渲染速度可能比加载速度快,因此不会考虑更新的数据来渲染...

无论如何,我都不想重新加载应用程序或会话。

谢谢 !

#inputCreation.R

test <- "IamDatasetNumber1"
data <- c(1, 3, 6, 4, 9)
save(test, data, file = "./Test/DatasetNumber1.Rdata")

test <- "IamDatasetNumber2"
data <- c(2, 7, 9, 12, 13)
save(test, data, file = "./Test/DatasetNumber2.Rdata")

#global.R

library(shiny)
library(shinyjs)
library(shinyalert)

load("DatasetNumber1.Rdata")

#ui.R

shinyUI(
  fluidPage(
    useShinyjs(),
    div(
        id = "main_page",
        fluidRow( # -------------------------------------------------------
                  column(
                    2, offset=0,
                    selectInput("dropdown_dataset", "Dataset :", choices=c("DatasetNumber1", "DatasetNumber2"), selected="DatasetNumber1")
                  ),
                  column(
                    1, offset=0,
                    useShinyalert(),
                    actionButton("button_dataset", "Load"),
                  )
        ),
        fluidRow( # -------------------------------------------------------
                  uiOutput("test_text")
        ),
        fluidRow( # -------------------------------------------------------
                  plotOutput("test_plot")
        )
    )
  )
)

#server.R

shinyServer(
  function(input, output, session) {
    
    observeEvent(input$button_dataset, {
      shinyalert(title = "Are you sure?",
                 text = "This action can take a while",
                 type = "warning",
                 closeOnEsc = TRUE,
                 closeOnClickOutside = TRUE,
                 showCancelButton = TRUE,
                 showConfirmButton = TRUE,
                 confirmButtonText = "OK",
                 confirmButtonCol = "#AEDEF4",
                 cancelButtonText = "Cancel",
                 inputId = "shinyalert",
                 callbackR = function(x){
                   if(x){
                     showModal(modalDialog("Loading...", footer=NULL))
                     print(paste(input[["dropdown_dataset"]],sep=""))
                     load(paste(input[["dropdown_dataset"]],".Rdata",sep=""))
                     removeModal()
                   }
                 }
      )
    })
    output$test_text <- renderText(test)
    output$test_plot <- renderPlot(plot(data))
  }
)
泰勒·史密斯

我更改了react_data的初始化。您应该load从全局文件中删除这样,切换时就可以垃圾收集数据集。否则,它将.GlobalEnv永远存在

试试这个服务器:

shinyServer(
  function(input, output, session) {

    react_data <- reactiveVal()
    react_data(local({load("DatasetNumber1.Rdata"); data}))

    observeEvent(
      input$shinyalert,
      {
        req(input$shinyalert)
        load(paste(input$dropdown_dataset,".Rdata",sep=""))
        react_data(data)
      })


    observeEvent(input$button_dataset, {
      shinyalert(title = "Are you sure?",
                 text = "This action can take a while",
                 type = "warning",
                 closeOnEsc = TRUE,
                 closeOnClickOutside = TRUE,
                 showCancelButton = TRUE,
                 showConfirmButton = TRUE,
                 confirmButtonText = "OK",
                 confirmButtonCol = "#AEDEF4",
                 cancelButtonText = "Cancel",
                 inputId = "shinyalert",
                 callbackR = function(x){
                   if(x){
                     showModal(modalDialog("Loading...", footer=NULL))
                     print(paste(input[["dropdown_dataset"]],sep=""))
                     removeModal()
                   }
                 }
      )
    })
    output$test_text <- renderText(test)
    output$test_plot <- renderPlot(plot(react_data()))
  }
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在“闪亮”应用程序中合并“粒子”动画

如何在闪亮的应用程序中呈现HTML图

如何在闪亮的应用程序中获取父URL

如何在闪亮的应用程序中折叠sidebarPanel?

使用“ actionButton”刷新闪亮应用程序中的输入值

闪亮:如何在闪亮的应用程序中添加反应条

如何在 Swift 中实现后台应用程序刷新?

如何在午夜在MVC应用程序中刷新数据?

闪亮的应用程序未反映更新RData文件中的更改

在无需刷新整个应用程序的情况下更新闪亮应用程序中的数据

如何在闪亮的应用程序中响应用户输入进行pdf下载?

绘制直方图时如何修复闪亮的应用程序中的“找不到对象'mydata'”

如何在闪亮的应用程序中嵌入的markdown块中突出显示R或Python代码

在闪亮的应用程序中,当源文件更改时,如何强制和嵌入式pdf查看器刷新

如何在闪亮的应用程序中观察 JavaScript 按钮

如何在闪亮的应用程序中插入横幅和文本

如何在闪亮的应用程序中垂直将动作按钮居中?

如何在闪亮的应用程序中为modalDialog禁用反应性

如何在闪亮的应用程序中通过日期范围对 uloaded 文件进行子集化

如何在闪亮的应用程序中打印用户构建的多行文本?

如何在闪亮的应用程序中更改条形图中的条形大小?

如何在闪亮的应用程序中以交互方式创建超链接?

如何在闪亮的应用程序中显示忙碌指示器?

如何在闪亮的应用程序中突出显示活动代码?

如何在闪亮的应用程序中的sankey图中对源和/或目标节点进行排序?

如何在闪亮的应用程序中基于选项卡选择实现条件输出

如何在闪亮的应用程序的navbarPage中设置tabPanel标题的颜色?

如何在闪亮的应用程序中居中放置图像?

如何在闪亮的应用程序中基于名义特征的级别为饼图着色?