Переименование списков имен реактивного фрейма данных в Shiny

#r #dataframe #shiny

#r #фрейм данных #shiny

Вопрос:

У меня есть R dataframe с несколькими столбцами, и я бы хотел, чтобы пользователи выбирали один столбец для построения графика со временем. Однако, когда я пытаюсь запустить этот код, я получаю сообщение об ошибке.

 country <- reactive({
    input$variable
})

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

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

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

Ошибка:

Ошибка в именах(new_data()) <- c(«дата», «местоположение», «col1»): недопустимая (НУЛЕВАЯ) левая часть присваивания

Кто-нибудь может мне помочь с этим, пожалуйста?

Ответ №1:

Это должно сработать:

 new_data <- reactive({
    data_selection <- data[which(data$location== country() amp; data$date >= date_start() amp; 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)