Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

flextable: scientific formats for a table that has both very large and very small numbers

I want to display the large numbers in scientific format and keep the regular format for the small numbers to reduce column width. The real data have more columns than what is shown here.

dput(A)
structure(list(st2_1 = c(1437.21, 1019.03, 1199.3, 850.35, 67.32, 
586.62), st1_2 = c(0.12, 0.08, 855.64, 606.68, 687.06, 5987.41
), st2_2 = c(0.11, 0.08, 837.72, 593.98, 3659.78, 31893.5), `1-sum(e)` = c(1522.79, 
1075.11, 2092.52, 1513.48, 1052.3, 9066.99), sss_1 = c(0.05, 
0.03, 0.99, 0.7, 0.03, 0.29), sss_2 = c(0.02, 0.02, 0.43, 0.3, 
0.02, 0.19), f_1 = c(4099185668.8, 2766736655.89, 2093885714.17, 
1228712929.01, 5592860407.22, 560845021.29), f_2 = c(990125323.33, 
668282982.85, 14238156533.71, 8355091636.51, 10241029160.69, 
1026957549.35), f_3 = c(237420871.69, 160246712.8, 711346410.36, 
417425137.15, 6553794288.93, 657206264.75)), row.names = c(NA, 
6L), class = "data.frame")

The code below, provided at Flextable format column to scientific notation, doesn’t work for me.

A %>%
flextable::flextable() %>%
     set_formatter(numbers = function(x) {
         formatC(x, format = "e", digits = 2)
     }) 

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The issue is that there is no column called numbers in your data. According to the docs (?set_formatter) you could pass

Name-value pairs of functions, names should be existing col_key values

to specify the format for columns by name. Hence, to format your large numbers you could do:

library(flextable)

format_scientific <- function(x) {
  formatC(x, format = "e", digits = 2)
}

A |> 
  flextable() |> 
  set_formatter(
    f_1 = format_scientific,
    f_2 = format_scientific,
    f_3 = format_scientific
  )

enter image description here

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading