사용자 인터페이스를 텍스트 영역에서 selectInput으로 대화식으로 변경하고 다시 되돌리고 싶습니다.
이것이 내가 server.r에 넣은 것입니다. 나는 counter1과 counter2를 사용하여 shinyapp에게 선택할 동적 UI를 알려줍니다. 제출 버튼을 누르면 counter1 또는 counter2에 1이 추가됩니다. 이렇게하면 counter1과 counter2는 교대로 같거나 같지 않습니다.
library(shiny)
counter1 <- 1
counter2 <- 0
shinyServer(function(input, output) {
output$MainAction <- renderUI( {
dynamicUi()
})
dynamicUi <- reactive({
if (counter11 == counter2){
counter1 <- counter1 + 1
return(
selectInput("choose","Choose yes or no", choices = c("yes"="yes","no"="no"))
)
}
else {
counter2 <- counter2 + 1
return(
tags$textarea(id="textfield", rows=8, cols=90, "put your text here")
)
}
})
})
그리고 이것은 내가 ui.r에 넣은 것입니다.
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("My shiny app"),
sidebarPanel(
uiOutput("MainAction"),
submitButton("action")
),
mainPanel(
tabsetPanel(
tabPanel("Output", uiOutput("outputaction"))
)
)
))
결과적으로 shinyapp이 텍스트 영역에 고정됩니다. 분명히 그것은 내가 원하는 것이 아닙니다. 아무도 여기서 무엇이 잘못되고 있는지 알고 있습니까? 내가 뭔가 놓친 것 같아요.
미리 감사드립니다!
submitButton 대신 사용 actionButton("counter")
하고 input$counter
에서 짝수인지 홀수 인지 확인하십시오 dynamicUi
.
코드가 작동하지 않는 이유는 읽은 dynamicUi
반응 값 (또는 다른 반응 표현식 또는 다른 반응 표현식 invalidateLater
)이 반응을 트리거 할 때만 실행 되기 때문 입니다. 이 경우 dynamicUI
반응 값을 읽지 않으므로 두 번 이상 실행되지 않습니다. 그러나 사용 actionButton("counter")
하고 읽으면 변경 input$counter
될 때마다 input$counter
반응식이 다시 실행됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다