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