r闪亮的动作按钮

时间:2015-03-06 22:05:34

标签: r shiny

在我的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 取决于它将执行的任务。我想要它来源&#39;一些R文件将加载数据。数据(为简单起见)最终出现在名为“myDf&#39;”的数据框中。

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

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

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

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

我在问,因为所有的例子似乎都在更新UI中的标签,这不符合我想做的事情。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以创建一个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

答案 1 :(得分:0)

经过大量的试验和错误,这就是似乎为我工作的原因:

<\ n>在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"
})

更新:我现在唯一的问题是&#39; loadHandler&#39;在启动时运行,而不是等待单击按钮。 : - (