2013-05-20 3 views
6

Ho una serie di caselle di controllo in un pannello laterale, definito come segue all'interno di un sidebarPanel:Come valori checkbox multipli a lucido

sliderInput("days", 
       "Days to monitor:", 
       min = 1, 
       max = 50, 
       value = 5), 
    checkboxInput("display_CMC", "Carolinas Medical Center", TRUE), 
    checkboxInput("display_MariaParham", "Maria Parham", TRUE), 
    checkboxInput("display_WakeMed", "Wake Med", TRUE) 

mi piacerebbe trasformare questi risultati in un vettore personaggio in modo programmatico (es. se avessi un checkboxInput con un nome 'display_ Voglio che analizzi automaticamente i risultati). Per fare questo, ho provato:

displayIdx <- grep("display_", names(input)) 
facilityCode_keep <- names(input)[ displayIdx ][ input[ displayIdx ] ] 

Purtroppo, che si traduce in:

Error: Single-bracket indexing of reactivevalues object is not allowed. 

Due domande:

  1. Come faccio a trasformare una serie di checkboxInput s in un vettore personaggio?
  2. Che succede con l'indicizzazione a squadra singola non consentita. Potrei capire se stavo cercando di assegnare a input, ma non lo sono.

risposta

9

Come si trasforma una serie di checkboxInput in un vettore di caratteri?

È possibile utilizzare l'indicizzazione a due parentesi. Ma in questo caso potresti prendere in considerazione l'uso della funzione checkboxGroupInput, che restituisce un vettore di caratteri dei valori selezionati.

Perché non l'indicizzazione a staffa singola?

L'indicizzazione a staffa singola è sottoinsiemi, mentre l'indicizzazione a due parentesi è il recupero di elementi (o qualcosa del genere). L'oggetto di input è più simile a un map/hash/dict/environment che ad un vettore con un nome, quindi il subsetting non ha realmente senso. (Allo stesso modo, non è possibile l'indice della parentesi quadra sugli oggetti dell'ambiente di R, è possibile solo l'indice della doppia parentesi.)

+0

Perfetto, grazie! Qualche idea sul perché l'indicizzazione a staffa singola non è consentita? –

+1

L'indicizzazione a parentesi singola è sottoinsiemi, mentre l'indicizzazione a due parentesi è il recupero di elementi (o qualcosa del genere). L'oggetto 'input' è più simile a una mappa/hash/dict/environment che come un vettore con nome, quindi il subsetting non ha realmente senso. (Allo stesso modo, non è possibile l'indice della parentesi quadra sugli oggetti di ambiente di R, è possibile solo l'indice della doppia parentesi.) –

+0

Grazie per la risposta veramente informativa. L'ho aggiunto alla tua risposta. –