selectInput() 값을 기반으로 checkboxGroupInput()을 업데이트하는 Shiny 앱을 빌드하고 있습니다. 또한 입력 값을 다시 선택할 때마다 동일하게 표시되도록 선택/선택 취소 된 값을 저장하려고합니다. 이렇게하려면 선택 값을 저장하기 위해 반응 값을 사용하고 있습니다.R updateCheckboxGroupInput() 및 selectinput()을 사용하여 캐시 된 값
여기 장난감 예제 : 대부분의 경우
library(shiny)
letters = c('A','B','C','D','E','F','G','H','I','J','K','L')
words = list("A" = c("apples","aardvark","alabama"),
"B" = c("banana","baltimore","beehive"),
"C" = c("catastrophe","cantalope"),
"D" = c("dinosaur","dairy","dolphin"),
"E" = c("eager","elephant","ecumenical"),
"F" = c("fleming","florida","flight"),
"G" = c("gator","greater","gait"),
"H" = c("HI"),
"I" = c("igloo","ignominious","interesting"),
"J" = c("jogging","jumpsuit"),
"K" = c("kellog","kangaroo"),
"L" = c("lemon","lime","lemonjello"))
ui <- fluidPage(
selectInput("letter","Choose Letter",choices=letters,selectize=F),
# Initiate check box group
checkboxGroupInput('words_by_letter',label='Select Your Favorite Words',choices = c(1))
)
server <- function(input, output, session) {
v_selected <- reactiveValues(
"A" = c("apples","aardvark","alabama"),
"B" = c("banana","baltimore","beehive"),
"C" = c("catastrophe","cantalope"),
"D" = c("dinosaur","dairy","dolphin"),
"E" = c("eager","elephant","ecumenical"),
"F" = c("fleming","florida","flight"),
"G" = c("gator","greater","gait"),
"H" = c("HI"),
"I" = c("igloo","ignominious","interesting"),
"J" = c("jogging","jumpsuit"),
"K" = c("kellog","kangaroo"),
"L" = c("lemon","lime","lemonjello"))
observeEvent(input$letter,{
updateCheckboxGroupInput(session,
inputId = "words_by_letter",
choices = words[[input$letter]],
selected = v_selected[[input$letter]])
})
observeEvent(input$words_by_letter,{
v_selected[[input$letter]] = input$words_by_letter
})
}
shinyApp(ui = ui, server = server)
이 잘 작동합니다. 그러나 (화살표 버튼을 누른 채로) 입력을 빠르게 스크롤하면 결국 일부 체크 박스 그룹이 선택 취소됩니다. 나는 이것이 Javascript와의 반응성 및 의사 소통의 속도와 관련이 있다고 가정하고 있지만, 그것을 고치는 방법을 모른다.
참고 : 각 '문자'에 대해 별도의 조건부 패널을 사용해 보았습니다.하지만 내 앱의로드 시간이 크게 늘어나므로이 전략을 사용하지 않는 것이 좋습니다.
경쟁 조건 : 그것은 가치가 무엇인지에 대한
는이 앱이 모습입니다 : 여기
는 코드입니다. 단단한. 몇 가지 시도했지만 주위를 얻을 수 없습니다. –내 대답에 대한 의견이 있으십니까? –
지연에 대해 사과드립니다. 나는 당신의 아이디어가 기존의 카테고리와 비교해보기를 좋아한다. 나는 이제 그것을 시험 할 기회를 얻고있다. 곧 업데이트를 보낼 것이다. – emitchell