Несовместимые цифры после запятой в сочетании с научной нотацией kableExtra table R markdown html - PullRequest
0 голосов
/ 26 апреля 2018

Моя проблема связана с наличием столбцов, которые я хочу отформатировать по-разному. Я хотел бы, чтобы количество цифр после десятичной точки во всех столбцах было одинаковым, но в последнем столбце столбца p-значения мне бы хотелось, чтобы научное обозначение отображалось для действительно малых чисел. Я все еще хотел бы иметь такое же количество цифр для научной записи, что и после десятичной дроби. Я пробовал несколько комбинаций цифр, ширины и формата, но ничего не дало результата, который я искал.

library(kableExtra)
library(knitr)

k.table <- mlr_table3 %>%
  mutate(P_value= cell_spec((formatC(x=P_value, digits=3, width = 3, format='g', flag = "-", drop0trailing = TRUE, preserve.width = "common")), "html", color = ifelse(P_value <= 0.05, yes="red", no="blue"), escape = F)) %>% 
  mutate_if(is.numeric, function(x) {
    cell_spec((formatC(x,digits=2, width=3, format="f", flag="-", drop0trailing = FALSE)), "html")
  }) %>%
  kable("html", escape = FALSE, align = "l", caption = "Summarized linear model with SSC Data") %>%
  kable_styling(c("striped", "bordered"), full_width = F) %>%
  column_spec(1, bold = T)

print.knitr_kable(k.table)

Прямо сейчас цифры в таблице выглядят так ...

Summarized linear model with SSC Data term estimate std.error statistic P_value (Intercept) 14.93 0.35 43.24 1.06e-173 Cortland -5.58 1.00 -5.58 3.86e-08 Fire -4.00 1.68 -2.38 0.0179 Frost -1.64 1.09 -1.51 0.132 Haral -5.32 1.09 -4.90 1.28e-06 HoneyA -4.81 1.11 -4.35 1.63e-05 HoneyB -0.97 1.09 -0.89 0.373 Sake -2.12 1.09 -1.95 0.0517 Mac -1.88 1.14 -1.65 0.1 Sweet -1.71 1.09 -1.57 0.116

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

В одну сторону, используя мой huxtable пакет:

library(broom)
library(huxtable)

# example data frame:
tbl <- tidy(lm(mpg ~ gear + cyl, data = mtcars)) 
ht  <- as_hux(tbl)

# 3 decimal places for columns 2-4:
number_format(ht)[, 2:4] <- 3  

# 4 significant figures, and possible scientific notation, for the p values:
number_format(ht)[, 5] <- "%.4g"

ht
##  (Intercept)   34.659   4.937   7.020    1.014e-07  
##  gear          0.652    0.904   0.721    4.766e-01  
##  cyl           -2.743   0.373   -7.344   4.324e-08  

Column names: term, estimate, std.error, statistic, p.value

Вы можете использовать все, что распознается ?sprintf, или даже определить свою собственную произвольную функцию для форматирования чисел. Печать в HTML или PDF выполняется автоматически в документе Rmarkdown.

0 голосов
/ 26 апреля 2018

Чтобы удалить научную запись, используйте format и установите scientific = FALSE

> x <- 1e10
> x
[1] 1e+10
> format(x, scientific = FALSE)
[1] "10000000000"

Чтобы исправить количество десятичных цифр, используйте round и установите digits значение

> x <- 0.0167
> round(x, digits = 2)
[1] 0.02
...