Создайте отформатированную таблицу в R markdown из tableOne

#r #r-markdown

Вопрос:

Я создал следующий код:

 df <- data.frame(age = round(runif(100, min = 1, max = 80)), 
             bmi = round(runif(100, min = 19, max = 30)), 
             amount = round(runif(100, min = 10, max = 10000)), 
             stringsAsFactors = FALSE)

tableone = CreateTableOne(data = df)
tableone
 

Теперь я хотел бы включить его в уценку и создать форматированную таблицу, используя какую — то функцию ktable, но, очевидно, она работает только для фреймов данных, и моя переменная «tableone» кажется списком-это правильно?

Можно ли отформатировать выход «tableone» как таблицу?

Спасибо!

Ответ №1:

Я нашел этот обходной путь, может быть, это поможет:

 library(tableone)
library(kableExtra)

df <- data.frame(age = round(runif(100, min = 1, max = 80)), 
                 bmi = round(runif(100, min = 19, max = 30)), 
                 amount = round(runif(100, min = 10, max = 10000)), 
                 stringsAsFactors = FALSE)

tb <-  CreateTableOne(data = df)
k <- print(tb$ContTable)


print(tb$ContTable) %>%
 kbl() %>%
 kable_paper("hover", full_width = F)
 

Это приводит к следующему:

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

Но функция print() печатает в вашей консоли также результат , так что при уценке у вас будет также это:

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

Таким образом, вы можете обмануть его, разделив печатную часть и подавив вывод, а затем распечатать таблицу kable в двух разных чанках:

 ---
title: "tableone"
author: "S__"
date: "17/8/2021"
output: html_document
---


```{r a echo=FALSE,warning=FALSE,message=FALSE,error=FALSE, results = 'hide'}  

library(tableone)
library(kableExtra)   

df <- data.frame(age = round(runif(100, min = 1, max = 80)), 
                 bmi = round(runif(100, min = 19, max = 30)), 
                 amount = round(runif(100, min = 10, max = 10000)), 
                 stringsAsFactors = FALSE)

tb <-  CreateTableOne(data = df)
k <- print(tb$ContTable)   

```  
```{r b, echo=FALSE}

 k %>%
 kbl() %>%
 kable_paper("hover", full_width = F)

```
 

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