R-为同一分析呈现多个输出
如果我有一个相当耗时的分析,比如说将模型拟合到某个数据集。我想显示模型拟合的所有输出,比如说将有renderPlot()、renderTable()、renderText()等。如何在模型只运行一次的情况下渲染所有这些输出?我当前的代码如下所示:R-为同一分析呈现多个输出,r,output,render,shiny,shiny-server,R,Output,Render,Shiny,Shiny Server,如果我有一个相当耗时的分析,比如说将模型拟合到某个数据集。我想显示模型拟合的所有输出,比如说将有renderPlot()、renderTable()、renderText()等。如何在模型只运行一次的情况下渲染所有这些输出?我当前的代码如下所示: shinyServer(function(input, output,session) { output$twang_diagplot <- renderPlot({ if(is.null(data())|input$twang_x=='
shinyServer(function(input, output,session) {
output$twang_diagplot <- renderPlot({
if(is.null(data())|input$twang_x=='.'|input$twang_y=='.') return(NULL)
else{
formula <- paste(input$twang_y, "~",paste(input$twang_x,collapse='+'))
ps_fit <- ps(as.formula(formula),data=workdata(),verbose=FALSE)
plot(ps_fit)
}
})
output$twang_summary <- renderPrint({
if(is.null(data())|input$twang_x=='.'|input$twang_y=='.') return(NULL)
else{
formula <- paste(input$twang_y, "~",paste(input$twang_x,collapse='+'))
ps_fit <- ps(as.formula(formula),data=workdata(),verbose=FALSE)
ps_balance <- bal.table(ps_fit)
print(ps_balance)
}
})
})
shinyServer(函数(输入、输出、会话){
output$twang\u diagplot对ps()
的两个调用似乎使用了不同的参数,因此我不确定在这种情况下是否可以使用只调用一次的被动式,因为ps
必须调用两次,我看不到解决方法
另外,您的代码可以从更大的间距中获益,使其更具可读性:)
评论后编辑:
你读过这本书了吗
像这样的东西应该有用
getPsFit <- reactive({
formula <- paste(input$twang_y, "~",paste(input$twang_x,collapse='+'))
ps_fit <- ps(as.formula(formula),data=workdata(),verbose=FALSE)
ps_fit
})
getPsFit谢谢你的回复!事实上,我的两个ps()可以使用相同的参数。在这种情况下,我如何使用reactive()来包装两个渲染输出?嗨,daattali,你能看一下上面的代码吗?是这样的吗?但是getPsFit()似乎函数仍然被调用了两次?PS我确实阅读了教程,但似乎无法使它工作,因此我认为可能我没有以正确的方式执行它。getPsFit
将在每次它的一个依赖项更改时运行。它有两个依赖项(input$twang\u x
和input$twang\u y
)因此,它可能会被调用两次,每次输入更改一次。如果这是问题所在,可以通过操作按钮来解决。最初,反应性有点难理解,可能会让人困惑,如果你是新手,我建议看很多闪亮的应用程序示例,尝试理解它,这会让人困惑两个依赖项不会改变,当我renderPlot时调用getPsFit,然后在renderplint时再次调用,这不是真的吗?
getPsFit <- reactive({
formula <- paste(input$twang_y, "~",paste(input$twang_x,collapse='+'))
ps_fit <- ps(as.formula(formula),data=workdata(),verbose=FALSE)
ps_fit
})