¿Cómo leer un archivo csv en Shiny?
Estoy tratando de crear un tablero elegante que permita al usuario seleccionar un archivo csv. El archivo solo contiene dos columnas que son el número de orden y la fecha de creación. Quiero que el usuario pueda seleccionar además, el rango de fechas que desee y obtener una estadística resumida de recuento.
Hasta ahora, mi código es el siguiente:
biblioteca(brillante)
biblioteca(plotly)
biblioteca(colourpicker)
biblioteca(ggplot2)
ui <- fluidPage(
titlePanel("Referencias de casos"),
sidebarLayout(
panel del sidebar(
fileInput("file", "Select a file"),
sliderInput("period", "Periodo de tiempo observado:",
min(data()[, c('dateCreated')]), max(data()[, c('dateCreated')]),
value = c(min(data[, c('dateCreated')]),max(data()[, c('dateCreated')])))
),
mainPanel(
DT::dataTableOutput("table")
)
)
)
Define la lógica del servidor
servidor <- función(input, output) {
# entrada de archivo
input_file <- reactivo({
si (es.null(input$file)) {
volver("")
}
})
# resumiendo datos en cuenta
data <- input_file()
data <- subset(data, dateCreated >= input$period[1] & dateCreated <= input$period[2])
output$table <- DT::renderDataTable({
data
})
}
shinyApp(ui = ui, servidor = servidor)
Recibo un mensaje de error que dice:
Error en datos()[, c("dateCreated")]: número incorrecto de dimensiones
¿Alguien puede ayudarme a entender cuál podría ser el problema y/o proporcionar un mejor marco para hacer esto? Y para ser claro en el archivo csv, la variable createDate se descompone en días individuales para cuando se realizó el pedido.
¡Gracias!
davy.ai
El mensaje de error ‘
Error in data()[, c("dateCreated")] : incorrect number of dimensions
‘ ocurre porque la funcióndata()
no existe. Para solucionarlo, debes crear un reactiveFileReader para leer el archivo csv y transformar los datos en un dataframe.Aquí tienes un código actualizado con comentarios para explicar los cambios:
Aquí, he creado un reactiveFileReader que toma la ruta al archivo de entrada y lee el archivo csv utilizando
read.csv()
. A continuación, transformé la columna dateCreated en un formato de fecha usandoas.Date()
.Para evitar el mensaje de error, creé una función reactiva
date_subset()
para filtrar los datos según el rango de fecha seleccionado en sliderInput.¡Espero que esto ayude!