Shiny reactivity 是否有办法在当前运行中使用上次运行的结果?

Shiny reactivity 是否有办法在当前运行中使用上次运行的结果?,shiny-reactivity,Shiny Reactivity,我正在使用Shiny为用户构建一个动态仪表板。我使用if语句将代码分为两个主要部分。有一个名为“新行”的输入,用户需要输入“是”或“否”作为此参数的值。如果用户选择“是”,则将运行代码的第一部分,如果用户选择“否”,则表示第一部分在之前运行,而只需要运行代码的第二部分。在第二部分中,有来自第一部分的一些参数。我想让Shiny保存计算结果和参数(“新行”==是),并将其用于下一次运行(“新行”==否),直到用户再次将“新行”的答案更改为“是”。 我使用了observeEvent功能和一个闪亮的操作

我正在使用Shiny为用户构建一个动态仪表板。我使用if语句将代码分为两个主要部分。有一个名为“新行”的输入,用户需要输入“是”或“否”作为此参数的值。如果用户选择“是”,则将运行代码的第一部分,如果用户选择“否”,则表示第一部分在之前运行,而只需要运行代码的第二部分。在第二部分中,有来自第一部分的一些参数。我想让Shiny保存计算结果和参数(“新行”==是),并将其用于下一次运行(“新行”==否),直到用户再次将“新行”的答案更改为“是”。 我使用了observeEvent功能和一个闪亮的操作按钮。但问题是(“新行”==是)的结果不能用于下一次运行

shinyserver(function(input,output)){
  observeEvent(input$click,{
   if(input$'New Line' == 'Yes'){}
   if(input$'New Line' == 'No'){}
  })
}

我希望每当用户为
新行
输入
并点击操作按钮时,代码可以使用
新行
时计算的变量。但是现在,每当我将
新行
设置为
并点击操作按钮时,R只运行第二个if。如果要告诉R再次运行所有行,我可以复制并粘贴第一行的所有行,但这些行大约需要30分钟,我不想重复它们。

您需要在某个地方序列化您的值。 一个例子:

shinyserver(function(input,output)){
  observeEvent(input$click,{
   if(input$'New Line' == 'Yes'){

       data <- result_of_some_function()
       some_other_things()
       write.csv(data, "file.csv") # saving the data somewhere on disk

   }

   if(input$'New Line' == 'No'){

       mypreviousdata = read.csv("file.csv")
       something <- somefunction(mypreviousdata)

   }
  })
}
shinyserver(功能(输入、输出)){
observeEvent(输入$click{
如果(输入$'newline'='Yes'){
数据