2013-03-17 5 views
3

У меня возникла проблема при проектировании вложенного приложения ввода/вывода. (Кроме того, я попытался отправить этот вопрос shiny-discuss Однако, он будет автоматически удален, когда я отправляю Почему..?)R Блестящая вложенная ошибка uiOutput: input => uiOutput => uiOutput => output

Мое приложение может быть упрощена следующие шаги:

  1. входного набора данных по текстовое поле. т. е .: ввод $ textarea.in

  2. Загрузить набор данных и показать список импортированных наборов данных. Пользователь может выбирать данные по selectInput. i.e: uiOutput ("choosedata")

  3. Вычислить диапазон выбранных данных, а затем отобразить sliderInput. то есть: uiOutput ("range")

  4. Наконец, вычислите квадрат значения, выбранный sliderInput. i.e.:verbatimTextOutput("range.out ")

То есть:

input => uiOutput => uiOutput => output 
      (work!)  (work!) (error!) 

Ошибка будет происходить на шаге 4 после изменения импортируемого набора данных. Чтобы быть более конкретным, первоначальный формат входного сигнала:

Data.A 1 2 3 4 5 
Data.B 6 7 8 9 10 11 

Другой формат входного сигнала:

Data.C 1 3 5 7 
Data.D 2 4 6 8 

Шаги 2 и 3 будет автоматически меняться, но шаг 4 обыкновение. Как это исправить?

Лучшие

Обратите внимание, что онлайн-приложения и код следующие:

http://glimmer.rstudio.com/tchsieh/myapp/

#========================= 
#ui.R 
#========================= 
library(shiny) 
shinyUI(pageWithSidebar( 
    headerPanel("Title"), 
    sidebarPanel(
    p("Text Area:"), 
    tags$textarea(id="textarea.in", rows=3, "Data.A 1 2 3 4 5 \nData.B 6 7 8 9 10 11"), 
    uiOutput("choosedata"), 
    uiOutput("range") 
), 

    mainPanel( 
    h2("Test"), 

    h3("Raw Data (step1: work!)"), 
    verbatimTextOutput("textarea.out"), 

    h3("Range of the selected data (step2: work!)"), 
    verbatimTextOutput("summary"), 

    h3("Squared of the selected value (step3:error when change Text area)"), 
    verbatimTextOutput("range.out") 


) 
)) 

#========================= 
#server.R 
#========================= 
library(shiny) 
shinyServer(function(input, output) { 
    loadPaste <- reactive({ 
    text <- input$textarea.in 
    temp <- lapply(readLines(textConnection(text)), function(x) scan(text = x, what='char')) 
    out <- list() 
    out.name <- 0 
    for(i in seq_along(temp)){ 
     out.name[i] <- temp[[i]][1] 
     out[[i]] <- as.numeric(temp[[i]][-1]) 
    } 
    names(out) <- t(data.frame(out.name)) 
    out 
    }) 

    output$textarea.out <- renderPrint({ 
    loadPaste() 
    }) 

    output$choosedata <- renderUI({ 
    dataname <- names(loadPaste()) 
    dataList <- list() 
    for(i in seq_along(dataname)){ 
     dataList[[i]] <- dataname[i] 
    } 
    selectInput("dataset", "Select dataset:", choices = dataList, selected = dataList[1]) 
    }) 

    output$summary <- renderPrint({ 
    out <- loadPaste() 
    id <- which(names(out) == input$dataset) 
    mydata <- out[[id]] 
    range(mydata) 

    }) 

    output$range <- renderUI({ 
    out <- loadPaste() 
    id <- which(names(out) == input$dataset) 
    mydata <- out[[id]] 
    sliderInput("range.in", "Selecte a value in the range of data", min=min(mydata), value=mean(mydata), max=max(mydata), step=diff(range(mydata))/10) 
    }) 

    output$range.out <- renderPrint({ 
    (input$range.in)^2 
    }) 

}) 
+0

Проблема была решена с помощью «tryCatch()» в выводе $ choosedata и вывода $ range. – user2179862

+0

Затем вы должны добавить это как ответ, чтобы люди могли находить его более легко. –

ответ

3

Это была ошибка в Shiny, которая была зафиксирована в this commit. Спасибо за отчет!

(Ваши неоднократные попытки опубликовать сообщения для блестящих обсуждений были классифицированы как спам группами Google. У меня нет спама и ответили на ваш последний пост, и отметили вас как надежного отправителя, так что, надеюсь, это не повторится Извините за неудобства!)