오히려 시간이 많이 소요되는 분석이있는 경우 모델을 일부 데이터 세트에 맞추어 보겠습니다. renderPlot(), renderTable(), renderText() 등이있을 것이라고 말하면서 모델 피팅의 모든 출력을 표시하고 싶습니다. 내 현재 코드는 다음과 같습니다R shiny - 동일한 분석을 위해 여러 출력 렌더링
위의 예에서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)
}
})
})
, 내가 별도로 줄거리 및 요약을 생성하기 위해 두 번 PS() 함수를 호출했다. 이것은 매우 비효율적입니다. 내가 respond() 또는 observe()와 같은 함수를 사용해야한다는 것을 알고 있습니다. ps() 함수를 호출 한 후에 두 렌더링 함수를 함께 래핑하는 데 사용할 수는 있지만 사용법은 확실하지 않습니다. 도움을 주셔서 감사합니다. 관련
shinyServer(function(input, output,session) {
getPsFit <- reactive({
formula <- paste(input$twang_y, "~",paste(input$twang_x,collapse='+'))
ps_fit <- ps(as.formula(formula),data=workdata(),verbose=FALSE)
ps_fit
})
output$twang_diagplot <- renderPlot({
if(is.null(data())|input$twang_x=='.'|input$twang_y=='.') return(NULL)
else{
ps_fit <- getPsFit()
plot(ps_fit)
}
})
output$twang_summary <- renderPrint({
if(is.null(data())|input$twang_x=='.'|input$twang_y=='.') return(NULL)
else{
ps_fit <- getPsFit()
ps_balance <- bal.table(ps_fit)
print(ps_balance)
}
})
})
으로 바꿔 주시면 감사하겠습니다. 사실 내 두 ps()는 동일한 인수를 사용할 수 있습니다. 이 경우 어떻게하면 두 개의 렌더링 출력을 래핑하기 위해 reactive()를 사용할 수 있습니까? –
안녕하세요, 위의 코드를 살펴볼 수 있습니까? 이게 뭔가? 하지만 getPsFit() 함수는 여전히 두 번 호출되는 것 같습니다. 추신 : 튜토리얼을 읽었지만 제대로 작동하지 않는 것 같아서 어쩌면 올바른 방법으로하지 않을 것이라고 생각합니다. –
'getPsFit'는 종속성 중 하나가 변경 될 때마다 실행됩니다. 그것은 두 개의 의존성 ('$ twang_x 입력과'$ twang_y')을 가지므로 입력 변경마다 한 번씩 두 번 호출 될 수 있습니다. 그게 문제라면, 그게'actionButton'으로 해결할 수 있습니다. –