2013-05-20 41 views
6

tôi có một loạt các hộp kiểm trong một panel bên cạnh, được định nghĩa như sau trong một sidebarPanel:Bắt nhiều giá trị checkbox trong Shiny

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) 

Tôi muốn chuyển đổi những kết quả vào một vector nhân vật một cách chương trình (ví dụ: nếu tôi có một checkboxInput có tên 'display_ Tôi muốn nó tự động phân tích cú pháp kết quả). Để làm điều đó, tôi đã cố gắng:

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

Thật không may, có kết quả trong:

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

Hai câu hỏi:

  1. Làm thế nào để chuyển đổi một loạt các checkboxInput s vào một vector nhân vật?
  2. Điều gì xảy ra với việc bỏ chỉ mục khung đơn không cho phép. Tôi có thể hiểu nếu tôi đang cố gắng giao cho input, nhưng tôi thì không.

Trả lời

9

Làm cách nào để chuyển đổi một loạt các checkboxInput thành một vector ký tự?

Bạn có thể sử dụng lập chỉ mục khung đôi. Nhưng trong trường hợp này, bạn có thể cân nhắc sử dụng hàm checkboxGroupInput để trả về một vectơ ký tự của các giá trị đã chọn.

Tại sao không chỉ lập chỉ mục một khung?

Lập chỉ mục một khung là đặt dưới, trong khi lập chỉ mục khung đôi là truy lục phần tử (hoặc một cái gì đó tương tự). Đối tượng đầu vào giống với một bản đồ/băm/dict/môi trường hơn là một vectơ được đặt tên, do đó, việc subsetting không thực sự có ý nghĩa. (Tương tự, bạn không thể chỉ định một khung trên các đối tượng môi trường của R, bạn chỉ có thể tăng gấp đôi chỉ mục.)

+0

Hoàn hảo, cảm ơn! Bất kỳ ý tưởng nào tại sao không cho phép lập chỉ mục một khung? –

+1

Lập chỉ mục một khung là đặt giá thầu, trong khi lập chỉ mục khung đôi là truy lục phần tử (hoặc thứ gì đó tương tự). Đối tượng 'input' giống như một bản đồ/băm/dict/môi trường hơn là một vectơ có tên, do đó, việc subsetting không thực sự có ý nghĩa. (Tương tự như vậy, bạn không thể chỉ định một khung trên các đối tượng môi trường của R, bạn chỉ có thể tăng gấp đôi chỉ mục.) –

+0

Cảm ơn câu trả lời thực sự mang tính thông tin. Tôi đã thêm nó vào phản hồi của bạn. –

Các vấn đề liên quan