여기에는 정적 또는 동적 입력에 사용할 수있는 또 다른 옵션이 있으며 입력을 완전히 다시 렌더링하지 않아도됩니다.
그것은 사용
reactiveValuesToList
모든 초기 입력 값을 얻기 위해, 그리고 (선택적으로) 후에 초기화 될 동적 입력 값.
session$sendInputMessage
일반 입력 값을 업데이트합니다. updateXyzInput
함수는 후드 아래 session$sendInputMessage(inputId, list(value = x, ...)
과 같이 이것을 호출합니다.
모든 반짝이 입력은 입력 메시지에 value
을 사용하며 거의 모든 입력 값이 그대로 업데이트됩니다.내가 찾은 두 개의 입력만으로는 특별한 케이스가 필요하지 않습니다. 아무 것도 선택하지 않으면 NULL
을 보내지 않으려면 checkboxGroupInput
, c(start, end)
을 list(start = start, end = end)
으로 변환하려면 dateRangeInput
을 보내야합니다.
맹목적으로 모든 입력을 재설정하는 것은 좋지 않을 수도 있지만 (탭이 재설정 될 수도 있음) 필터링 된 입력 세트를 쉽게 재설정 할 수 있습니다.
library(shiny)
ui <- pageWithSidebar(
headerPanel("'Reset inputs' button example"),
sidebarPanel(
numericInput("mynumber", "Enter a number", 20),
textInput("mytext", "Enter text", "test"),
textAreaInput("mytextarea", "Enter text", "test"),
passwordInput("mypassword", "Enter a password", "password"),
checkboxInput("mycheckbox", "Check"),
checkboxGroupInput("mycheckboxgroup", "Choose a number", choices = c(1, 2, 3)),
radioButtons("myradio", "Select a number", c(1, 2, 3)),
sliderInput("myslider", "Select a number", 1, 5, c(1,2)),
uiOutput("myselUI"),
uiOutput("mydateUI"),
tags$hr(),
actionButton("reset_input", "Reset inputs")
),
mainPanel(
h4("Summary"),
verbatimTextOutput("summary")
)
)
server <- function(input, output, session) {
initialInputs <- isolate(reactiveValuesToList(input))
observe({
# OPTIONAL - save initial values of dynamic inputs
inputValues <- reactiveValuesToList(input)
initialInputs <<- utils::modifyList(inputValues, initialInputs)
})
observeEvent(input$reset_input, {
for (id in names(initialInputs)) {
value <- initialInputs[[id]]
# For empty checkboxGroupInputs
if (is.null(value)) value <- ""
session$sendInputMessage(id, list(value = value))
}
})
output$myselUI <- renderUI({
selectInput("mysel", "Select a number", c(1, 2, 3))
})
output$mydateUI <- renderUI({
dateInput("mydate", "Enter a date")
})
output$summary <- renderText({
return(paste(input$mytext, input$mynumber))
})
}
shinyApp(ui, server)
멋진 아이디어 ..... – jdharrison
많은 감사합니다! 두 개의 입력 대신 11 개의 코드를 사용하여 원래 응용 프로그램의 코드를 이미 시도했으며 코드가 두 번 입력되지 않는 것이 좋습니다. Btw : html 태그에 도움이되는 정보가 있습니까? 나는 지금까지 "이드"와 그것의 유용성을 알지 못했습니다. – Insa
@Matthew Plourde, @Insa 여기서 div와 id가 정말 중요하다고 생각하지 않습니다.이것은'div (id = letters [times %% length (letters)) + 1]'을'list'로 바꾼 것입니다. –