2

HTML 输出由 summarytool::dfSummary 函数创建。

摘要工具

summarytools 使用 Bootstrap 的样式表生成独立的 HTML 文档,这些文档可以使用通用的 print() 函数显示在 Web 浏览器或 RStudio 的查看器中。

当 HTML 在选项卡面板上呈现时,整个 UI 都会发生变化。有没有办法在不改变 UI 的情况下在标签面板上呈现 HTML?

library(summarytools)

ui <- fluidPage(
  titlePanel("dfSummary"),
  sidebarLayout(
    sidebarPanel(
      uiOutput("dfSummaryButton")
    ),
    mainPanel(
      tabsetPanel(
        tabPanel("Data Input",
         dataTableOutput("dataInput"),
         br(),
         verbatimTextOutput("profileSTR")),
        tabPanel("dfSummary Output",
         htmlOutput("profileSummary")))
    )
  )
)
server <- function(input, output, session) {
#Read in data file
recVal <- reactiveValues()
dfdata <- iris

#First 10 records of input file
output$dataInput <- renderDataTable(head(dfdata, n = 10), options = list(scrollY = '500px', 
                          scrollX = TRUE, searching = FALSE, paging = FALSE, info = FALSE, 
                          ordering = FALSE, columnDefs = list(list(className = 'dt-center', 
                          targets = '_all'))))

#str() of input file
output$profileSTR <- renderPrint({
  ProStr <- str(dfdata)
  return(ProStr) 
})

#Create dfSummary Button
output$dfSummaryButton <- renderUI({
      actionButton("dfsummarybutton", "Create dfSummary")
    })

### Apply dfSummary Buttom
observeEvent(input$dfsummarybutton, {
  recVal$dfdata <- dfdata
})

#dfSummary data
output$profileSummary <- renderUI({
       req(recVal$dfdata)
       SumProfile <- print(dfSummary(recVal$dfdata), omit.headings = TRUE, method = 'render')
       SumProfile
})
}
shinyApp(ui, server)
4

1 回答 1

0

summarytools 0.8.3 版有一个新的布尔选项,bootstrap.css可以防止这种情况发生。此外,graph.magnif允许调整图形的大小。

SumProfile <- print(dfSummary(recVal$dfdata), 
                    method = 'render',
                    omit.headings = TRUE,
                    footnote = NA,
                    bootstrap.css = FALSE,
                    graph.magnif = 0.8)

最新版本可以安装devtools

devtools::install_github("dcomtois/summarytools")

祝你好运 :)

于 2018-04-16T03:52:17.753 回答