renderdatatable r shiny shiny-server

R salida diferente brillante entre renderTable y renderDataTable



render table shiny (1)

No hay ninguna razón para tener el mismo resultado de 2 funciones diferentes.

  • rendertable usa xtable para crear la tabla html
  • renderDataTable utiliza una biblioteca javascript externa

Puede obtener el mismo formato de fecha, solo debe formatear su fecha antes de llamar a la renderTable . Aquí un breve ejemplo completo.

library(shiny) dat <- data.frame(date=seq.Date(Sys.Date(),by=1,length.out=5), temp = runif(5)) ui <- fluidPage( fluidRow(column(4,dataTableOutput(''dto'')), column(4,tableOutput(''to''))) ) server <- function(input,output){ output$dto <- renderDataTable({dat}) dat$date <- format(dat$date,''%Y-%m-%d'') output$to <- renderTable(dat) } runApp(list(ui=ui,server=server))

Tengo una aplicación brillante que muestra una buena tabla html de mis datos, usando renderDataTable . Luego quería hacer algunas estadísticas básicas, datos de subconjuntos y calcular los medios y algunos otros datos.

Al mostrar resultados con renderTable , encontré que la columna de fecha no se mostró en formato de fecha. En la figura puedes ver la diferencia. Ambas tablas se generan a partir del mismo conjunto de datos en la misma aplicación web brillante. ¿Puedes explicar lo que está pasando?

Y aquí puedes ver ui.R y server.R. En este script, solo quiero mostrar una tabla y me sorprendió la salida diferente.

ui.R

library(shiny) # Estructura de la página (paneles) shinyUI(pageWithSidebar( # Título superior headerPanel(""), # Panel lateral izquierdo - selección de datos sidebarPanel( helpText("Selecciona las fechas y el tipo de datos. Pulsa el botón Actualizar."), selectInput("torre", "Torre:", list("Agres" = "mariola", "Alfàs del Pi" = "shelada", "Altura" = "altura", "Vistabella del Maestrat" = "vistabella", "Xàtiva" = "xativa")), selectInput("tipo", "Intervalo de datos", list("Diezminutales" = "-datos-10m.csv", "Diarios" = "-datos-diarios.csv", "Mensuales" = "-datos-mensuales.csv")), dateInput(''date1'', label = ''Fecha inicial'', value = Sys.Date()), dateInput(''date2'', label = ''Fecha final.'', value = Sys.Date()), submitButton("Actualizar"), helpText(" Descarga de datos tabulados en formato CSV."), downloadButton(''downloadData'',''Descargar datos'') ), # Panel principal (presentación de gráficas) mainPanel( tabsetPanel( tabPanel("Inicio", h3("Consulta de datos"), p(HTML("Some info.")), tableOutput("view") ), tabPanel("Ayuda", htmlOutput("ayuda"),id="ayuda"), tabPanel(''Tabla de datos'', dataTableOutput("table1")), tabPanel(''Medias'', tableOutput("table2")) ) ) ))

y servidor.R

library(shiny) library(plyr) library(lubridate) library(scales) options(shiny.transcode.json = FALSE) # Funciones shinyServer(function(input,output){ filename=reactive({ paste0(input$torre,input$tipo) }) day1=reactive({ as.POSIXct(input$date1) }) day2=reactive({ as.POSIXct(input$date2) }) # Ayuda introFile <- ''./ayuda.txt'' ayuda <- readChar(introFile, file.info(introFile)$size) output$ayuda <- renderText({HTML(ayuda)}) datos2=reactive({ fn = filename() f = read.csv(fn,header=T, sep=",",na.strings="-99.9") f$date = as.Date(f$date) f }) datos=reactive({ d1 <- as.Date(day1()) d2 <- as.Date(day2()) datos2a = datos2() with( datos2a , datos2a[ date >= d1 & date <= d2, ] ) }) # Tabla de datos output$table1 = renderDataTable({ datos() }, options = list(aLengthMenu = c(12, 20, 40), iDisplayLength = 12)) output$table2 = renderTable({ datos() }) output$downloadData <- downloadHandler( file = c(''data.csv''), content = function(file) { write.csv(datos(), file) } ) })

Gracias de antemano por tu ayuda