2013-05-20 3 views
6

У меня есть ряд флажков в боковой панели, определяются следующим образом Внутри sidebarPanel:Попадая нескольких значений флажка в Блестящей

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) 

Я хотел бы превратить эти результаты в вектор символов в программном пути (например, если у меня есть checkboxInput с именем «display_ Я хочу, чтобы он автоматически анализировал результаты). Чтобы сделать это, я попробовал:

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

К сожалению, это приводит:

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

два вопроса:

  1. Как превратить серию checkboxInput с в вектор символов?
  2. Что происходит с запретом индексирования одиночной скобки. Я мог понять, пытался ли я назначить input, но я не уверен.

ответ

9

Как преобразовать последовательность checkboxInputs в вектор символа?

Вы можете использовать индексирование с двойной скобкой. Но в этом случае вы можете вместо этого использовать функцию checkboxGroupInput, которая возвращает вектор символов выбранных значений.

Почему нет однострочного индексации?

Индексирование с одной скобкой является подмножеством, тогда как индексирование с двумя скобками является извлечением элементов (или что-то в этом роде). Объект ввода больше похож на map/hash/dict/environment, чем на именованный вектор, поэтому подмножество на самом деле не имеет смысла. (Аналогично, вы не можете индексировать единичные индексы на объектах среды R, вы можете использовать только индекс с двумя скобками.)

+0

Отлично, спасибо! Любая идея, почему индексирование с одним скобкой не разрешено? –

+1

Индексирование с одной скобкой является подмножеством, а индексирование с двумя скобками - извлечение элементов (или что-то в этом роде). Объект 'input' больше похож на map/hash/dict/environment, чем на именованный вектор, поэтому подмножество на самом деле не имеет смысла. (Аналогично, вы не можете индексировать единичные индексы на объектах среды R, вы можете только индексировать с двумя скобками.) –

+0

Спасибо за действительно информативный ответ. Я добавил его к вашему ответу. –

Смежные вопросы