13  表格

13.1 code生成的表格

13.1.1 换行符的处理

提示

kable函数不会对单元格中的\n进行处理,因此需要提前替换为<br>

Code
library(tidyverse)

# 只替换某一列
journal <- readxl::read_excel('data/candidate-journals.xlsx') %>% 
  mutate(`Similar articles` = str_replace_all(`Similar articles`, "\n", "<br>"))

# 替换所有列
# 使用 mutate_all() 和 str_replace_all() 函数替换 \n
journal <- journal %>%
  mutate_all(~ str_replace_all(., "\n", "<br>"))

13.2 markdown表格

13.2.1 列宽

13.2.1.1 用dash的数量表示宽度(貌似不起作用)

fruit price
apple 2.05
pear 1.37
orange 3.09

13.2.1.2 用tbl-colwidth属性

用在markdown表格: {tbl-colwidths="[75,25]"}或者代码块中#| tbl-colwidths: [75,25]

fruit price
apple 2.05
pear 1.37
orange 3.09

13.2.2 caption

| Col1 | Col2 | Col3 |
|------|------|------|
| A    | B    | C    |
| E    | F    | G    |
| A    | G    | G    |

: My Caption {#tbl-letters}

See @tbl-letters.
表 13.1— My Caption
Col1 Col2 Col3
A B C
E F G
A G G

See 表 13.1.

13.3 Debug

  • 如果字段名包含特殊字符,如\n,会导致表格显示不出来。

  • 表格行数太多(如3万行)会导致渲染失败,因此只显示前10行

13.4 在线生成表格

13.5 表格样式专业工

13.6 DT包

13.6.1 举例

参考资料: https://rstudio.github.io/DT/

Code
library(DT)
iris2 = iris[c(1:10, 51:60, 101:110), ]

datatable(iris2, filter = 'top', options = list(
  pageLength = 5, autoWidth = TRUE
))

13.6.2 渲染html标签

Code
library(DT)

# 假设你已经有了一个包含HTML标签的data.frame,比如df$PMID列包含的是带链接的HTML文本
df <- data.frame(
  PMID = c('<a href="https://pubmed.ncbi.nlm.nih.gov/134343">PMID 1</a>',
           '<a href="https://pubmed.ncbi.nlm.nih.gov/134345">PMID 2</a>'),
  TITLE = c("Title 1", "Title 2"),
  AUTHOR = c("Author 1", "Author 2"),
  JOURNAL = c("Journal 1", "Journal 2")
)

# 在DT表格中显示并允许渲染HTML标签
datatable(df, escape = FALSE)

13.7 DataEditR包

Code
library(DataEditR)

# data_edit(mtcars)

13.8 reactable包

参考:https://www.ai2news.com/blog/2588118/