r 闪亮的动作按钮

r shiny actionButton

在我的 ui.R 中有一个 actionButton。

actionButton("myLoader", "Load Data")

更新:server.R 方:

output$myLoader <- reactive({
  cat("clicked!!") #I never see this logged to the console!
})

我看不到正在注册的点击。

此外,在我的 server.r 中,我不确定如何连接它,因为 UI 中没有 DIRECTLY 依赖的内容关于它将执行的任务。我想要它 'source' 一些将加载数据的 R 文件。数据(为简单起见)最终出现在名为 'myDf'.

的数据框中

问题是 ui 已经被反应函数更新了,比如:

MainDataset <- reactive({ 
... #subset(myDf) based on other input controls like sliders etc.
})

output$myplot <- renderChart2({
    ... #use MainDataset()
})

如何连接操作按钮以便: - 它可以加载它需要的数据到 myDf - 它是否以某种方式渗透到现有的反应函数,最后是地块?不是在寻找确切的解决方案,只是在 actionButton 的服务器端应该是什么样子的结构中的指针...

我问是因为所有示例似乎都在更新 UI 中的标签,这与我想做的不一致。

谢谢!

经过大量试验和错误后,似乎对我有用:

在server.R中:

loadHandler <- reactive({
  input$myLoader #create a dependency on the button, per Shiny examples.

  #load data.
  #this is a func that uses 'source()' to run a whole bunch of R files
  #each of which loads data (eg csv file), and sets global dataframes
  #that are then subsetted via other UI elements like sliders etc.
  myloadingFunc(input$input1, input$input2)

  #updates a label. Shouldn't need to do this?
  #just put this here in case a reactive() needs to return something...
  "loaded dataset XYZ"
})

更新:我现在唯一的问题是'loadHandler'在启动时运行,而不是等待按钮被点击。 :-(

您可以创建一个 reactive 表达式,该表达式依赖于将加载您需要的数据的按钮。例如:

loadHandler <- reactive({
  #creates a dependency on the button 
  #when the button is clicked, 1 is added to input$myLoader
  #so the if statement will only be executed once the button is clicked.
  if(input$myLoader){
       #load your data here
 }
})

如果您不需要 reactive 表达式返回的内容,您可以使用 observe 代替。