在R/Shiny中,如何使用操作按钮触发观察事件?

在R/Shiny中,如何使用操作按钮触发观察事件?,r,shiny,shiny-reactivity,R,Shiny,Shiny Reactivity,这是我之前文章“在R/Shiny中,如何使用操作按钮触发观察事件函数?”的简化和更清晰版本 下面的代码以反应式的方式输出用户输入的绘图,因此用户可以查看输入的构建。绘图需要保持被动(不链接到单击操作按钮)。下面代码中的Observe事件从这些输入中创建一个R对象(称为“matrix_inputs.R”),用于此处未显示的另一个R函数。我想让用户在单击操作按钮时将输入数据保存到R对象(触发观察事件)。然后,用户可以继续向输入矩阵输入更多数据,并在反应的基础上观察绘图的变化,而不改变R对象。如果用户

这是我之前文章“在R/Shiny中,如何使用操作按钮触发观察事件函数?”的简化和更清晰版本

下面的代码以反应式的方式输出用户输入的绘图,因此用户可以查看输入的构建。绘图需要保持被动(不链接到单击操作按钮)。下面代码中的Observe事件从这些输入中创建一个R对象(称为“matrix_inputs.R”),用于此处未显示的另一个R函数。我想让用户在单击操作按钮时将输入数据保存到R对象(触发观察事件)。然后,用户可以继续向输入矩阵输入更多数据,并在反应的基础上观察绘图的变化,而不改变R对象。如果用户在进行这些进一步更改后再次单击“操作”按钮,则更新的数据将被保存并写入在“观察事件”中创建的同一个R对象上

我知道我应该在Observe事件中插入“input$go,{…}”。它不在下面的代码中,因为如果我插入它,应用程序将无法工作,它会立即崩溃。我尝试了各种迭代,但都没有成功。有人对如何实现这一目标有什么见解吗?保持绘图完全实时反应,同时将观察事件链接到操作按钮

代码如下:

library(shiny)
library(shinyMatrix)

m <- matrix(c(1,1), 1, 2, dimnames = list(NULL, c("Y", "Z"))) 

ui <- fluidPage(   
  
  titlePanel("Vector Generator"),   
  
  sidebarPanel(
    width = 6,     
    tags$h5(strong("Matrix inputs:")),     
    matrixInput("matrix_input",
                value = m,
                rows = list(extend = TRUE, names = TRUE, editableNames = TRUE),
                cols = list(extend = FALSE, names = TRUE, editableNames = FALSE),
                class = "numeric")
  ), # closes sidebarPanel
  
  actionButton(inputId = "go",label = "Save data"),
  
  mainPanel(
    
    h5(strong("Plot of matrix inputs:")),
    width = 6,plotOutput("graph"),
    
    h5(strong("Table of matrix inputs:")),
    tableOutput("view"),
  
  ) # closes main panel
)   # closes user input (UI) section

server <- function(input, output, session) {   
  
  matrix_input <- reactive(input$matrix_input)

  # Captures input data for further processing in R ----
  observeEvent(matrix_input(), {matrix_input.R <<- unique(matrix_input())})
  
  output$graph <- renderPlot({     
    plot(matrix_input(),type="b")
  }) 
  
  output$view <- renderTable({
    matrix_input()
  })
  
} # closes user server section

shinyApp(ui, server)
库(闪亮)
图书馆(shinyMatrix)

m假设我对您的理解是正确的,并且您希望在用户按下“Go”键时渲染绘图,我会在您的服务器上尝试以下操作:



服务器我想让绘图和表格输出完全反应,在用户输入时立即反映输入。我上面发布的代码就是这样做的。我希望操作按钮触发observeEvent,根据我的代码(包括导致应用程序崩溃的输入$go除外),它生成一个名为matrix_input.R的R对象,在用户准备好时保存输入数据。我的意思是“(除了不包括输入$go…)哦,好的,我会编辑。你只需要在ObserveeEvent中包装matrix的东西,尽管我还有一些其他问题:为什么你要将matrix_input.R设置为全局?matrix_input.R将用于其他应用程序和其他Shiny之外的R程序。