我的目标是在R中创建一个反应性闪亮函数。有多个输出(例如表格)可以绑定到类似的函数。但是我需要函数来响应某个参数,特定于一个表。这里有一些简单的示例代码,它不起作用,但它让我的想法变得清晰 - 我希望:
output$tableOne <- DT::renderDataTable({
getData(foo)
})
getData <- reactive(function(funParameter){
corrStartDate <- input$StartDate
corrEndDate <- input$EndDate
return(someData(corrStartDate, corrEndDate, funParameter))
})
在所有表中(如果有多个表)我不想显示具有不同基本参数的数据(getData(x,y,foo))。所以第二个表可以使用“getData(x,y,bar)”。我不想每次为另一个表写相同的函数。
上述解决方案无效,因为无功功能不支持参数。
你会如何解决这个问题?
答案 0 :(得分:10)
这应该起作用:
getData <- eventReactive(input$funParameter, {
corrStartDate <- input$StartDate
corrEndDate <- input$EndDate
return(someData(corrStartDate, corrEndDate, input$funParameter))
})
eventReactive
仅在事先声明的参数更改时才更新。实际上,如果input$StartDate
或input$EndDate
发生变化,则无法触发此反应。
如果这不是您想要的,那么正常的无功功能应该起作用。即:
getData <- reactive({
funParameter <- input$funParameter
corrStartDate <- input$StartDate
corrEndDate <- input$EndDate
return(someData(corrStartDate, corrEndDate, funParameter))
})
如果任何输入改变
,将触发