web-dev-qa-db-ja.com

R光沢のあるcheckboxGroupInput-クリックしてすべてのチェックボックスを選択します

CheckboxGroupInputを含むRShinyアプリがあり、updateCheckboxGroupInput関数を使用して「すべて選択」ボタンを作成しようとしています。以下の完全なコードを見ることができますが、基本的に私は次のようにcbグループを定義しました。

checkboxGroupInput("campaigns","Choose campaign(s):",campaigns_list)

次に、ボタンをクリックして、関数を呼び出します。

updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)

関数が実行されたことが示されていますが、実際にはチェックボックスの選択を解除しています。ところで、cbGroupInputの定義時にselectedを配置すると、機能しましたが、関数では機能しませんでした。

ありがとう!

これは私のサーバーです。R:

library(shiny)
source('usefulFunctions.R')
shinyServer(function(input, output, session) {

  output$cascading <- renderUI({
    provider_id <- input$provider
    if (provider_id == "") return(NULL)
    campaigns_list <<- t(getCampaigns(provider_id))
    tagList(
      checkboxGroupInput("campaigns","Choose campaign(s):", 
                         choices = campaigns_list, selected = campaigns_list),
      actionLink("selectall","Select All")
      )
  })

  observe({
    if(is.null(input$selectall)) return(NULL)
    if (input$selectall > 0)
    {
      print(campaigns_list)
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)
    }
    })


})
10
Yoav

また、ボタンまたはリンクが2で割り切れるかどうかを確認して、ここに選択オプションと選択解除オプションを追加しました。

#rm(list = ls())
library(shiny)
campaigns_list <- letters[1:10]

ui =fluidPage(
  checkboxGroupInput("campaigns","Choose campaign(s):",campaigns_list),
  actionLink("selectall","Select All") 
)
server = function(input, output, session) {

  observe({
    if(input$selectall == 0) return(NULL) 
    else if (input$selectall%%2 == 0)
    {
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list)
    }
    else
    {
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)
    }
  })
}
runApp(list(ui = ui, server = server))
13
Pork Chop

_campaigns_list_がリストの場合、selectedupdateCheckboxGroupInput引数で選択する必要があるボックスの値ではなく、すべての選択肢のリストを指定していることが原因である可能性があります。 。

_selected=campaigns_list_をselected=unlist(campaigns_list)に置き換えてみてください。

ダミー名の例を次に示します。

_library(shiny)
server<-function(input, output,session) {
  observe({
    if(input$selectall == 0) return(NULL)
    else if (input$selectall > 0)
    {
      variables<-list("Cylinders" = "cyl","Transmission" = "am","Gears" = "gear")
      updateCheckboxGroupInput(session,"variable","Variable:",choices=variables,selected=unlist(variables))
    }
  })
}

ui <- shinyUI(fluidPage(        
    checkboxGroupInput("variable", "Variable:",list("Cylinders" = "cyl","Transmission" = "am","Gears" = "gear")),
    actionButton("selectall", "Select All")
))
shinyApp(ui = ui, server = server)
_
2
NicE