R shiny: Edit the format of a table output

13,475

Hi I have added comments in my answer, hopefully this would help. Look in to Datatables here for more information how to customize your tables.

rm(list = ls())
library(shiny)
library(scales)

# Sample Data
area <- seq(from=10,to=100, by=10)
peri <- seq(from=2710.1,to=2800.1, by=10)
shape <- seq(from=0.1,to=1, by=0.1)
perm <- seq(from=1,to=100, by=10)
my_data <- as.data.frame(cbind(area,peri,shape,perm))

ui = fluidPage(
  sidebarLayout(
    sidebarPanel(),
    mainPanel(
      tableOutput("view"),
      #4 Make the final row bold using tags$style
      tags$style(type="text/css", "#view tr:last-child {font-weight:bold;}")
    ),
  )
)

server = function(input, output) {
  output$view <- renderTable({
    test <- my_data
    #1 Comma Seperator as 1000: you can use the library(scales) and the comma function
    test$peri<-comma(test$peri)
    #2 Out the "£" sign before every value in column 1 (or any column): you can use paste0
    test$area <- paste0("£",test$area)
    test
    #3 Remove row names : use inlcude.rownames=FALSE
  },include.rownames=FALSE)

}
runApp(list(ui = ui, server = server))
Share:
13,475
user1165199
Author by

user1165199

Updated on October 20, 2022

Comments

  • user1165199
    user1165199 over 1 year

    I am outputting a table using shiny (with renderTable and tableOutput), is there a way to edit the format of the table and of the values within the table.

    Specifically I want to

    • Use comma as 1000 superator (i.e. change 1234567 to 1,234,567)
    • Put a £ sign before every value in one column
    • Make the final row bold
    • Remove row names

    So if you take the shiny reactivity e.g. as an example

    runExample('03_reactivity')
    

    This outputs a table 'view', the server.R code for it is

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

    The ui.R code for it is

    tableOutput("view")
    

    In this example I would want to output

    area    peri        shape   perm
    £4,990  2,791.90    0.09    6.30
    £7,002  3,892.60    0.15    6.30
    £7,558  3,930.66    0.18    6.30
    £7,352  3,869.32    0.12    6.30
    £7,943  3,948.54    0.12    17.10
    £7,979  4,010.15    0.17    17.10
    £9,333  4,345.75    0.19    17.10
    £8,209  4,344.75    0.16    17.10
    £8,393  3,682.04    0.20    119.00
    £6,425  3,098.65    0.16    119.00 
    

    (With the header remaining bold and the bottom row also in bold, turns out stackoverflow is equally difficult to get in the format I want ;))

  • Yihui Xie
    Yihui Xie over 9 years
    You may take a look at the DT package if you want to work with DataTables: github.com/rstudio/DT
  • Pork Chop
    Pork Chop over 9 years
    Oh this is sweet, I didn't know about this package and most of the things I do on the datatable is with tags$style or tags$scrip, Cheers for that