如何在R Markdown中添加垂直线到手动创建的表格?

mnowg1ta  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(169)

类似的问题已经被问到herehere,然而,所有的解决方案都主要依赖于使用kableExtra包来创建表,我正在尝试在R Markdown中手动创建表,而不使用任何额外的包。
我之所以手动操作是因为我的一些表条目需要特殊字符(或包含LaTex命令,如\url{some url})或包含外部网站的链接,因此,我不确定是否可以使用kableExtra包(或类似包)。
然而,我尝试手动复制kableExtra表的外观,特别是我尝试在每列之间添加垂直线,以使它在编织的HTML和pdf文件之间保持一致。
例如,使用下面的代码,我使用kableExtra手动创建了一个表,在手动创建的表中包含了指向wikipedia的链接(我不确定我是否可以使用kableExtra)。然而,如上所述,在我的实际表中,我需要包括LaTex命令(为了简单起见,我在这里省略了)。第一个图像是编织的HTML,第二个图像是编织的PDF。
1:手工创建表:

| Make                                                       | mpg     | cyl  |  disp |
|:-----------------------------------------------------------|:--------|:-----|:------|
| [Mazda RX4](https://en.wikipedia.org/wiki/Mazda_Luce)      | 21.0    | 6    |  160  |
| [Mazda RX4 Wag](https://en.wikipedia.org/wiki/Mazda_Luce)  | 21.0    | 6    |  160  |
| [Datsun 710](https://en.wikipedia.org/wiki/Nissan_Violet)  | 22.8    | 4    |  108  |

2:kableExtra创建的表格:

library(dplyr)
library(kableExtra)

dt <- mtcars[1:3, 1:3]
dt %>% 
tibble::rownames_to_column("Make") %>%
knitr::kable() %>%
kableExtra::kable_styling(bootstrap_options = "bordered")

下面是上面的代码如何与HTML结合的:

这就是上面的代码如何编织成pdf:

可以看到,当使用kableExtra时,每列之间都有垂直线分隔,我想知道是否可以通过手动方法复制这一点?

pcww981p

pcww981p1#

kableExtra中可以有url和特殊字符;如果你分享了你心目中的特殊字符类型,我们当然也可以渲染它们。关于如何在kable中渲染特殊字符,已经有一些问题了。

library(dplyr)
library(knitr)
library(kableExtra)
library(stringr)

read.table(text = " Make                                     mpg     cyl    disp 
 [Mazda_RX4](https://en.wikipedia.org/wiki/Mazda_Luce)       21.0     6      160  
 [Mazda_RX4_Wag](https://en.wikipedia.org/wiki/Mazda_Luce)   21.0     6      160  
 [Datsun_710](https://en.wikipedia.org/wiki/Nissan_Violet)   22.8     4      108", 
           header = T) -> df1

df1 %>% 
  mutate(make_link = str_match_all(Make, "(?<=\\().+?(?=\\))"),
         make_text = str_match_all(Make, "(?<=\\[).+?(?=\\])"),
         Make = cell_spec(make_text, "html", link = make_link)) %>%
  select(-c(make_link, make_text)) %>% 
  kable("html", escape = FALSE, booktabs = T) %>%
  kable_styling(bootstrap_options = c("bordered"))

相关问题