R brillant de sortie différents entre renderTable et renderDataTable

J'ai une brillante application qui montre une belle table html de mes données, à l'aide de renderDataTable. Puis j'ai voulu faire quelques statistiques de base, sous-ensemble de données et de calculer les moyens et quelques autres données.

Lors de l'affichage des résultats avec renderTable, j'ai trouvé que la colonne de la date n'a pas été présenté dans le format de date. Dans la figure, on voit la différence. Les deux tables sont générées à partir de la même base de données dans le même brillant web app. Pouvez-vous expliquer ce qui se passe?

R brillant de sortie différents entre renderTable et renderDataTable

Et ici vous pouvez voir l'interface utilisateur.R et le serveur.R. Dans ce script, je veux juste montrer un tableau et a été surpris par la sortie différente.

de l'interface utilisateur.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"))
    )
  )
))

et serveur.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)
    }
  )

})

Merci d'avance pour votre aide

  • Pourquoi attendez-vous t ont la même sortie pour renderDataTable et renderTable? Ils sont complètement différents. Ensuite, Vous devriez être en mesure de reproduire le même comportement avec un petit brillant exemple ( pas besoin d'avoir tous les autres composants de l'INTERFACE utilisateur/fonctions de serveur). Vous avez très long, bruyant, non reproductible exemple.
  • Je m'attendais à la même sortie que je pensais qu'ils étaient juste des façons de montrer de données, ne savais pas que je devais formater les données avant. Je suppose renderTable savait date a été dans certains format de date en raison de f$date = as.Date(f$date) Merci pour votre réponse.
  • Je vais essayer de faire de mon mieux concernant reproductible exemples prochaine fois. Merci.
  • Notez que renderTable ne pas jouer gentil avec les dates. Vous auriez besoin de les convertir en caractères. Voir, par exemple, cette discussion
  • Oui @Vincent qui était le point. Dans ce cas, je vais utiliser renderDataTable lors de la lecture avec les dates. Merci
InformationsquelleAutor pacomet | 2014-02-04