2016-01-27 4 views
0

Я прочитал (How do I make the choices in radioButtons reactive in Shiny?), где показано, как обновить radioButton s реактивным способом. Однако, когда я пытаюсь обновить два набора кнопок из одних и тех же данных, отображает только один набор. Пример:Обновление двух комплектов радиообъектов реактивно - блестящих

Сервер:

# Create example data 

Wafer <- rep(c(1:3), each=3) 
Length <- c(1,1,2,1,1,1,3,5,1) 
Width <- c(3,1,6,1,1,1,1,1,6) 

dd <- data.frame(Wafer, Length, Width) 

shinyServer(function(input, output, session){ 

# Create reactive dataframe to store data 
    values <- reactiveValues() 
    values$df <- data.frame() 

# Get Lengths and Widths of wafer from user input 
a <- eventReactive(input$do, { 
     subset(dd, Wafer %in% input$wafer, select = Length:Width) 
}) 

# Update reactive data frame will all Lengths and Widths that have been selected by the user input 

observe({ 
    if(!is.null(a())) { 
    values$df <- rbind(isolate(values$df), a()) 
    } 
    }) 

    output$wl <- renderDataTable({ a() }) 

# Update radio buttons with unique Length and Widths stored in values$df 
# Which ever "observe" I put first in the code, is the one which updates 
# the radio buttons. Cut and paste the other way round and "width" 
# updates but not "length" radio buttons 

    observe({ 
    z <- values$df 
    updateRadioButtons(session, "length", choices = unique(z$Length), inline=TRUE) 
    }) 

    observe({ 
    z <- values$df 
    updateRadioButtons(session, "width", choices = unique(z$Width), inline=TRUE) 
    }) 

}) 

УИ:

library(markdown) 

shinyUI(fluidPage(
    titlePanel("Generic grapher"), 
    sidebarLayout(
    sidebarPanel(

     numericInput("wafer", label = h3("Input wafer ID:"), value = NULL), 

     actionButton("do", "Search wafer"), 
     radioButtons("length", label="Length", choices=""), 
     radioButtons("width", label="Width", choices = "") 

    ), 

    mainPanel(

     dataTableOutput(outputId="wl") 
    ) 
) 
) 
) 

В вышеприведенном радиокнопки сделать обновление, но только для первого набора кнопок для того кода, т.е. выше обновлений «длины», но «ширина» - нет. Если я напишу их в обратном порядке, обновится «ширина», но «длина» не будет. Может быть, мне нужно определить новый сеанс?

+0

Проблема была решена здесь: http://stackoverflow.com/questions/35056668/update-two-sets-of-radiobuttons-shiny – Pete900

ответ

0

Оказывается, что:

«это потому, что ошибка JS происходит, если выбор аргумент не вектор а символ»

Я отправил вопрос на Github глянцеватого в:

https://github.com/rstudio/shiny/issues/1093

Это может быть решено путем:

Чтобы устранить проблему, вы можете преобразовать ваш выбор персонажей используя as.character или set, выбранный для случайной строки, такой как «».

См:

Update two sets of radiobuttons - shiny