【问题标题】:Printing linebreaks in HTML kable table在 HTML kable 表中打印换行符
【发布时间】:2018-07-12 19:14:59
【问题描述】:

当使用kable 创建表时,当data.frame 'dt' 中的字符串有\n 时,有没有办法生成换行符(即< br >)?

例如,这里:

library(data.table); 
dt <- fread("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/prince_raw_data.csv")
dt <- dt[301:303,2:6] #take three songs only

library(knitr); library(kableExtra)
kable(dt);
# use this line to view it:   dt %>% kable %>% kable_styling()

这与Automated nicely formated book of lyrics from data.frame using markdown, knitr and glue有关:

【问题讨论】:

  • 感谢您提供可重现的示例,但通常不建议在 Stackoverflow 上使用外部数据源。希望我的回答有所帮助,并展示了如何非常容易地制作一个真正基本的数据框:)

标签: r r-markdown knitr


【解决方案1】:

由于文本字符串包含\n 格式的换行符,您可以将所有这些替换为等效的HTML 标记&lt;br&gt;。我更喜欢使用 stringr 包中的 str_replace_all,但您也可以考虑使用 base R 中的 gsub

这是一个可重现的例子:

---
output: html_document
---

```{r}
library(stringr)


dt <- data.frame(text = c("Here is some sample text \nHere is some sample text\n", 
                          "Here is more sample text \nAgain with a linebreak"),
                 name = c("Name 1", "Name 2"))
dt$text <- stringr::str_replace_all(dt$text, "\\n", "<br>")

knitr::kable(dt)
```

如果您没有将文件编译为 HTML R Markdown 输出,您也可以使用 dt %&gt;% kable(format = "html",escape = FALSE) %&gt;% kable_styling() 来显示它。请注意,escape=FALSE 可以防止换行符被弄乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 2020-06-06
    • 2020-03-06
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多