在我的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中的标签,这不符合我想做的事情。
谢谢!
答案 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;在启动时运行,而不是等待单击按钮。 : - (