问题描述
我尝试使用R gt软件包在gt单元中强制换行。在gt文档中,描述了使用cols_label()
# example
gt_tbl %>%
cols_label(
col = html("text1,<br>text2")
)
但是在单元格中,我找不到方法。我尝试通过添加\ n或
而不成功。
library(gt)
# dummy data
dat <- tibble(
a=1:3,b=c("a","b c","d e f")
)
# A tibble: 3 x 2
a b
<int> <chr>
1 1 a
2 2 b c
3 3 d e f
# with \n
dat %>%
mutate(b=str_replace_all(b," ","\n")) %>%
gt()
# with <br>
dat %>%
mutate(b=str_replace_all(b,"<br>")) %>%
gt()
始终生成相同的表:
预期结果:
有什么想法吗?
谢谢
解决方法
我们需要致电fmt_markdown,如下所示:
使用 fmt_markdown()时,在渲染期间,传入单元格中任何Markdown格式的文本都会转换为适当的输出类型。
dat %>%
mutate(b = str_replace_all(b," ","<br>")) %>%
gt() %>%
fmt_markdown(columns = TRUE)
或解决方法:拆分为新行,然后调用gt()
:
dat %>%
separate_rows(b) %>%
mutate(a = ifelse(duplicated(a),"",a)) %>%
gt()