Shinyjs: radioButtons์— ๋Œ€ํ•ด "selected = character(0)" ์ƒํƒœ๋กœ ์žฌ์„ค์ •

์— ๋งŒ๋“  2016๋…„ 09์›” 22์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: daattali/shinyjs

์ด๋ด ๋”˜,

๋‹น์‹ ์˜ ๋ฉ‹์ง„ ํŒจํ‚ค์ง€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. reset() ํ•จ์ˆ˜๊ฐ€ radioButtons๋ฅผ ๋ฒ„ํŠผ์ด ์„ ํƒ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค( selected = character(0) ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ).

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•Œ๋ ค ์ค˜์„œ ๊ณ ๋งˆ์›Œ. ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฒ ์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์–ธ์ œ/์–ผ๋งˆ๋‚˜ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค

๋ชจ๋“  3 ๋Œ“๊ธ€

๋ฏธ์•ˆํ•˜์ง€๋งŒ, Shinyjs๋Š” ๋น›๋‚˜๊ธฐ ์ „๊นŒ์ง€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ๋ง์€ Shiny๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ๋””์˜ค ๋ฒ„ํŠผ์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ( updateRadioButtons() ) ๊ฐ’์œผ๋กœ ์•„๋ฌด ๊ฒƒ๋„ ์„ ํƒํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด character(0) ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜์™€ ์žˆ์ง€๋งŒ ํ•ด๋‹น ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ๋ฐ˜์ง์ž„์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ •๋ง ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด renderUI(radioButtons(...)) ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. :)

@daattali ์ด ํ›Œ๋ฅญํ•œ ํŒจํ‚ค์ง€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ด์‹ญ์ผ์ผ ์ „ ํ˜„์žฌ์ด ๋™์ž‘์„ ์ œ๋Œ€๋กœ ๋ฐ˜์ง์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค https://github.com/rstudio/shiny/commit/770ebc394f1685c2d4a1eb7fd2d1610796281b84 https://github.com/rstudio/shiny/issues/2266
์ž…๋ ฅ ๊ฐ’์€ NULL ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

Shinyjs๊ฐ€ ์ง€๊ธˆ ์ด๊ฒƒ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ด์ „ ์‚ฌ๋ก€/๊ด€์ฐฐ์—์„œ ์šฐ๋ฐœ์ ์œผ๋กœ ๋Š๋ฆฐ ์ž…๋ ฅ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด (๋ฒ”์ฃผํ˜•) ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์„ ์œ„ํ•œ ๋ฐ˜์ง์ด๋Š” ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ผ๋””์˜ค ์ƒ์ž๋ฅผ ์ง€์›๋‹ˆ๋‹ค. ์ด ์ƒ์ž๋„ disable s ์ œ์ถœ ๋ฒ„ํŠผ์„ ์ง€์›๋‹ˆ๋‹ค(shinyjs ๐Ÿ˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค).

ใ…

library(shiny) # > 1.5.0
library(shinyjs)

  shinyApp(
    ui = fluidPage(
      useShinyjs(),
      div(
        id = "form",
        radioButtons("gender", "Gender", c("Male", "Female"), selected = character(0))
      ),
      actionButton("resetGender", "Reset Gender"),
    ),
    server = function(input, output, session) {

      observeEvent(input$resetGender, {
        updateRadioButtons(session, "gender", selected = character(0))
      })

      observe(print(input$gender))

      })
    }
  )
}

์•Œ๋ ค ์ค˜์„œ ๊ณ ๋งˆ์›Œ. ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฒ ์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์–ธ์ œ/์–ผ๋งˆ๋‚˜ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰