r - 如何在处理 csv 文件后添加带有统计信息的部分
问题描述
我正在用 Shiny 做一个实验来上传一个 csv 文件,处理它并显示两个不同的东西:1)数据的摘要分析,2)遵循一些特定条件的值列表,代码是这样的:
library(shiny)
library(DT)
library(sqldf)
library(data.table)
# Define UI
ui <- shinyUI(fluidPage(
h1("Sample Report"),
h1(""),
fileInput(
'target_upload',
'Choose file to upload',
accept = c('text/csv',
'text/comma-separated-values',
'.csv')
),
radioButtons(
"separator",
"Separator: ",
choices = c(","),
selected = ",",
inline = TRUE
),
DT::dataTableOutput("sample_table"),
tags$style(type="text/css",
".shiny-output-error { visibility: hidden; }",
".shiny-output-error:before { visibility: hidden; }"
),
))
# Define server logic
server <- shinyServer(function(input, output) {
df_products_upload <- reactive({
inFile <- input$target_upload
if (is.null(inFile))
return(NULL)
df <-
read.csv(inFile$datapath,
header = TRUE,
sep = input$separator)
return(df)
})
output$sample_table <- DT::renderDataTable({
df <- df_products_upload()
pros <-
sqldf('select * from df where XXXX="any value" AND XX > 2 ')
qual <-
sqldf('select * from df where YYYY="any value" AND XX > 2 ')
AllDataIssue <-
rbind(pros,
qual)
DT::datatable(
{ AllDataIssue },
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
'Table 1: ', htmltools::em('Any message.')
),
extensions = 'Buttons',
options = list(
fixedColumns = TRUE,
autoWidth = TRUE,
ordering = TRUE,
dom = 'Bftsp',
filter = 'top',
buttons = c('csv', 'excel')
))
})
})
# Run the application
shinyApp(ui = ui, server = server)
使用此代码,解决了我的问题的第 2 部分,但我不知道如何添加一个框,例如显示summary(AllDataIssue)
结果表的 a 。我的意思是,我想添加一个界面元素,其中可能包括对结果对象的基本分析。
有什么建议么?
解决方案
您可以使用包含过滤数据的响应式,然后使用 renderPrint 输出其摘要:
在 UI 中添加:
textOutput("summary"),
并更改服务器
AllDataIssue <- reactive({
df <- df_products_upload()
pros <-
sqldf('select * from df where XXXX="any value" AND XX > 2 ')
qual <-
sqldf('select * from df where YYYY="any value" AND XX > 2 ')
AllDataIssue <-
rbind(pros,
qual)
})
output$summary = renderPrint(summary(AllDataIssue()))
output$sample_table <- DT::renderDataTable({
DT::datatable(
{ AllDataIssue() },
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
'Table 1: ', htmltools::em('Any message.')
),
extensions = 'Buttons',
options = list(
fixedColumns = TRUE,
autoWidth = TRUE,
ordering = TRUE,
dom = 'Bftsp',
filter = 'top',
buttons = c('csv', 'excel')
))
})
注意 AllDataIssue() 后面的括号
推荐阅读
- javascript - 使用 History-Back 功能时 Firefox 的行为变化
- python - python检查从某个日期开始的交替星期一
- python - 在python中将pdf的字符串表示形式转换为字节的某种方法
- bazel - 访问 genrule 中输入文件的哈希以传递给 Bazel 中的命令
- javascript - 具有多个参数的蒸汽
- php - 在 PHP 中读取大于 10Gb 的视频文件大小
- sql - 在包含许多行的 SQL 表中,如何快速确定查询是否可能返回超过 1000 行
- git - 我可以追溯修复应该是“移动和更新”的“删除添加”吗?
- python - Python3 pathlib 添加额外的反斜杠 \\
- java - Android studio的设计视图为空