R Shiny嵌套uiOutput错误:input => uiOutput => uiOutput =>产量

时间:2013-03-17 17:41:47

标签: r shiny

我在设计嵌套输入/输出应用时遇到问题。 (我也尝试将此问题发布到shiny-discuss。但是,当我发帖时会自动删除。为什么?)

我的应用可以简化为以下步骤:

  1. 按textarea输入数据集。即:输入$ textarea.in

  2. 加载数据集并显示导入数据集的名称列表。用户可以通过selectInput选择数据。即:uiOutput(“choosedata”)

  3. 计算所选数据的范围,然后显示sliderInput。即:uiOutput(“范围”)

  4. 最后,计算sliderInput选择的值的平方。 i.e.:verbatimTextOutput("range.out“)

  5. 那是:

    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
      })
    
    })
    

1 个答案:

答案 0 :(得分:3)

这是Shiny中的一个错误,已在this commit中修复。谢谢你的报告!

(您反复尝试发布闪亮讨论的内容都被Google网上论坛归类为垃圾邮件。我没有垃圾邮件并回复了您最近的帖子,并将您标记为安全发件人,所以希望这不会再次发生。很抱歉给您带来不便!)