在Shiny中将标记表显示为html表

时间:2017-08-19 17:54:44

标签: r shiny markdown r-markdown pander

我看到了这个应用https://rich.shinyapps.io/regression/,我想做类似的事情,将回归输出显示为html。

我将我的应用分为三部分,如下所示。

server.R没有“引擎”问题且回归结果正确,并且正在将summary()正确转换为降价。

ui.R也正常工作,但htmlOutput("model")之后显示的降价显示是从

获得的
output$model <- renderPrint({
        pander(summary(model()))
      })
server.R中的

,即使是有效的降价表,该表也不会很好地显示。

如何将我的降价摘要显示为R Markdown中的常用表?我当前的输出是:

enter image description here

应用程序的完整MWE

global.R

#library(shinyapps)
library(googleVis)
library(knitr)
library(pander)
library(shiny)
#library(shinysky)

ui.R

# Define UI for application 
shinyUI(fluidPage(

  # Application title

  titlePanel("Bivariate Regression"),

  # Sidebar 

  sidebarLayout(
    sidebarPanel(      
      textInput("name", label = h5("Name"), value = "Name"),
      HTML('</br>'),
      #selectInput("dataset", h5("Choose a dataset:"), choices = c("cars", "longley", "MLB","rock", "pressure")),        
      selectInput("dataset", h5("Choose a dataset:"), choices = c("cars", "longley","rock", "pressure")),        
      HTML('</br>'),
      uiOutput('dv'),    
      HTML('</br>'),
      uiOutput('iv'),
      HTML('</br>')),
      #radioButtons('format', h5('Document format'), c('PDF', 'HTML', 'Word'), inline = TRUE),
      #downloadButton('downloadReport')),
      #includeHTML('help.html')),

    # main panel 

    mainPanel(
      tabsetPanel(type = "tabs", 
                  tabPanel("Data",
                           HTML("</br>Select a data set from the 'Choose a dataset menu' or enter your own data below </br> </br>"),
                           numericInput("obs", label = h5("Number of observations to view"), 10),
                           tableOutput("view")),

                  tabPanel("Summary Statistics",
                           verbatimTextOutput("summary"),
                           textInput("text_summary", label = "Interpretation", value = "Enter text...")),

                  tabPanel("Model",                   
                           htmlOutput("model"),
                           textInput("text_model", label = "Interpretation", value = "Enter text..."))
      )                         
    ))
))

server.R

shinyServer(function(input, output) {

  # list of data sets
  datasetInput <- reactive({
    switch(input$dataset,
           "cars" = mtcars,
           "longley" = longley,
           "MLB" = mlb11,    
           "rock" = rock,
           "pressure" = pressure, 
           "Your Data" = df())
  })

  # dependent variable
  output$dv = renderUI({
    selectInput('dv', h5('Dependent Variable'), choices = names(datasetInput()))
  })

  # independent variable
  output$iv = renderUI({
    selectInput('iv', h5('Independent Variable'), choices = names(datasetInput()))
  })

  # regression formula
  regFormula <- reactive({
    as.formula(paste(input$dv, '~', input$iv))
  })

  # bivariate model
  model <- reactive({
    lm(regFormula(), data = datasetInput())
  })


  # create graphics 

  # data view 
  output$view <- renderTable({
    head(datasetInput(), n = input$obs)
  })

  # summary statistics
  output$summary <- renderPrint({
    summary(cbind(datasetInput()[input$dv], datasetInput()[input$iv]))
  })

  # bivariate model
  output$model <- renderPrint({
    pander(summary(model()))
  })

  # residuals
  output$residuals_hist <- renderPlot({
    hist(model()$residuals, main = paste(input$dv, '~', input$iv), xlab = 'Residuals') 
  })

  output$residuals_scatter <- renderPlot({
    plot(model()$residuals ~ datasetInput()[,input$iv], xlab = input$iv, ylab = 'Residuals')
    abline(h = 0, lty = 3) 
  })

  output$residuals_qqline <- renderPlot({
    qqnorm(model()$residuals)
    qqline(model()$residuals) 
  })

})

0 个答案:

没有答案