【问题标题】:Dynamically create checkBoxGroup based on a file in shiny基于闪亮的文件动态创建checkBoxGroup
【发布时间】:2017-04-24 07:46:39
【问题描述】:

我正在制作一个闪亮的应用程序来根据上传的数据创建图表。输入文件中的一列是一个类别。我想为每个独特的类别创建一个复选框,但我认为我缺少一些东西。 ui.R

fluidPage(
    titlePanel("Dynamic Check Boxes"),
    fluidRow(

    fileInput('file1', 'Upload a file'),

    plotOutput('plot1'),

    # This is where I'm trying to put the check boxes
    uiOutput("ui")
    )
)

这是我的服务器。R

categories = c()
test_data = NULL

function(input, output) {

    # Trying to generate the check boxes
    output$ui <- renderUI({
        if (is.null(input$input_type))
            return()
        checkboxGroupInput('test', 'checkboxes', categories)
    })

    output$plot1 <- renderPlot({

        inFile <- input$file1

        if (is.null(inFile))
            return(NULL)

        test_data <<- read.table(inFile$datapath, head = F)
        categories <<- unique(test_data$V1)

        ggplot(test_data, aes(V2, V3)) + geom_point(aes(colour=V1))

    })
}

我一直在使用的测试文件。

A   10  10
A   1   2
B   0   1
C   5   5
C   0   1
C   5   11
D   1   2

【问题讨论】:

    标签: r user-interface shiny


    【解决方案1】:

    你应该使用reactive,而不是使用全局变量:

    function(input, output) {
        # read the file
        test_data <- reactive({
            inFile <- input$file1
            if (is.null(inFile))
                return(data.frame(V1=character(0), V2=integer(0), V3=integer(0)))
            read.table(inFile$datapath, head = F)
            })
    
        # Trying to generate the check boxes
        output$ui <- renderUI(checkBoxGroup('test', 'checkboxes', unique(test_data()$V1)))
    
        output$plot1 <- renderPlot({
            ggplot(test_data(), aes(V2, V3)) + geom_point(aes(colour=V1))
        })
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 2023-03-03
      • 1970-01-01
      • 2018-05-11
      相关资源
      最近更新 更多