从 TableOne 在 R markdown 中创建格式化的 table

Create formatted table in R markdown from TableOne

我创建了以下代码:

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

现在我想将它包含在 Markdown 中并使用某种 ktable 函数生成格式化的 table 但显然它仅适用于数据框和我的变量“tableone" 似乎是一个列表 - 对吗?

是否可以将“tableone”的输出格式化为 table?

谢谢!

我找到了这个解决方法,也许它有帮助:

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() 也会在你的控制台中打印结果,所以在 markdown 中,你也会有这个:

所以你可以欺骗它,分割打印部分并抑制输出,然后在两个不同的块中打印 kable table:

---
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)

```