Как отформатировать все числа в таблице в r с помощью kable?

Вывод кода

Мне нужно уменьшить или упростить числа в этой таблице. Я хочу, чтобы отображалось только до 4 десятичных знаков и, если возможно, только целые числа, если число является целым числом. Как бы я этого добился?

library(kableExtra)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3
a = data.frame(x, y, z)
b = t(a)
c = kable(b, "html", align = "c") %>%
  kable_styling(full_width = F)

person LegendOfKass    schedule 10.03.2019    source источник
comment
@ eipi10 - самого аргумента digits недостаточно для печати x без десятичных знаков.   -  person Len Greski    schedule 11.03.2019


Ответы (1)


Используйте функцию format(), чтобы преобразовать данные в минимальное количество десятичных знаков, необходимое для визуализации данных. Используя код из исходного сообщения:

library(knitr)
library(kableExtra)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3

a = data.frame(x = format(x,digits=4,nsmall = 0), 
               y = format(y,digits=4,nsmall = 0), 
               z = format(z,digits = 4,nsmall = 0))
b = t(a)
c = kable(b, "html", align = "c") %>%
  kable_styling(full_width = F)

... и вывод:

введите описание изображения здесь

Включая комментарии Мартина Шмельцера, полная версия того же решения выглядит так.

# tidyverse alternative
library(knitr)
library(kableExtra)
library(dplyr)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3
data.frame(x,y,z) %>% 
   mutate_if(is.numeric, format, digits=4,nsmall = 0) %>% t(.) %>% kable(.,"html",align = "c") %>% 
   kable_styling(full_width = F) -> c
person Len Greski    schedule 11.03.2019
comment
df %>% mutate_if(is.numeric, format, digits=4) %>% kable облегчает жизнь. - person Martin Schmelzer; 11.03.2019
comment
@MartinSchmelzer - в вашем коде отсутствует аргумент nsmall и функция t(.) в конвейере, но я включил эти элементы и добавил в ответ версию tidyverse. Спасибо за ответ! - person Len Greski; 11.03.2019
comment
Хорошо осознавал, чего не хватало. Поскольку я только комментировал без каких-либо выходных данных, я не видел в этом необходимости, поскольку основное внимание уделялось условной мутации. - person Martin Schmelzer; 11.03.2019