【问题标题】:Renaming coulmns names of a reactive dataframe in Shiny在 Shiny 中重命名反应性数据框的列名
【发布时间】:2021-03-12 08:56:46
【问题描述】:

我有一个包含几列的 R 数据框,我希望用户选择一列来绘制时间图。但是,当我尝试运行此代码时,我收到一条错误消息。

country <- reactive({
    input$variable
})

date_start <- reactive({
    input$dateRange[1]
})

date_end <- reactive({
    input$dateRange[2]
})

new_data <- reactive({
    data[which(data$location== country() & data$date >= date_start() & data$date<=date_end()),c("date","location",input$info)]
    names(new_data()) <- c("date", "location", "col1")
})

错误是:

名称错误(new_data())

谁能帮帮我,好吗?

【问题讨论】:

    标签: r dataframe shiny


    【解决方案1】:

    这应该可以解决问题:

    new_data <- reactive({
        data_selection <- data[which(data$location== country() & data$date >= date_start() & data$date<=date_end()),c("date","location",input$info)]
        colnames(data_selection) <- c("date", "location", "col1")
        data_selection
    })
    

    您在 reactive 调用中引用了响应值,然后将其分配给 new_data。因为这发生在赋值之前,所以调用中 new_data 的值为 null。幸运的是,没有必要这样做。

    注意:由于您没有发布数据,我无法实际测试您的代码。 然而,这里有一个最小的工作示例来说明这个概念:

    library(shiny)
    
    ui <- fluidPage(
        dataTableOutput("geysers")
    )
    
    server <- function(input, output) {
        test <- reactive({
            a <- faithful[1:3,]
            colnames(a) <- c("a", "b")
            a
        })
        output$geysers <- renderDataTable({test()})
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 1970-01-01
      • 2022-01-02
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多