gpt4 book ai didi

R 在 renderTable 和 renderDataTable 之间 Shiny 的不同输出

转载 作者:行者123 更新时间:2023-12-03 11:00:53 38 4
gpt4 key购买 nike

我有一个 Shiny 的应用程序,它使用 renderDataTable 显示了我的数据的漂亮 html 表。 .然后我想做一些基本的统计、子集数据和计算均值和其他一些数据。

使用 renderTable 显示结果时,我发现日期列没有以日期格式显示。从图中可以看出区别。这两个表都是从同一个 Shiny 的 Web 应用程序中的同一个数据集生成的。你能解释一下发生了什么吗?

enter image description here

在这里你可以看到 ui.R 和 server.R。在这个脚本中,我只想显示一个表格,并且对不同的输出感到惊讶。

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

server.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)
}
)

})

在此先感谢您的帮助

最佳答案

没有理由从 2 个不同的函数获得相同的输出。

  • rendertable用途 xtable创建 html 表
  • renderDataTable使用外部 javascript 库

  • 您可以获得相同的日期格式,您应该在调用 renderTable 之前格式化您的日期。 .这是一个简短的完整示例。
    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))

    关于R 在 renderTable 和 renderDataTable 之间 Shiny 的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548843/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com