kableextra colnames 在 R 中的特定字符后换行
kableextra colnames lineabreak after a specific character in R
我下面有 table:
mydf <- data.frame(col0 =c(rep("z",5)),col1= c(rep(0,5)), col2= c(rep(1,5)))
colnames(mydf) <- c("name","aaaa, bbbb", "ccccccc, ddddd-dd")
mynames <- sapply(c(colnames(mydf)), FUN = function(x) gsub("," , ",\\", x))
kbl(mydf,
escape=F,
col.names = linebreak(mynames))
我希望我的列名称在“,
”(逗号)之后换行到下一行。我尝试了 ",\\"
、",\"
和 ",\n"
。 none 正在工作。我正在制作一个 r markdown pdf 输出。
有什么建议或提示吗?
我们可以使用 HTML
标签 ("<br>"
) 为 HTML 文件创建换行符 - gsub/sub
是矢量化的,因此不需要循环在列名称的每个元素上
library(kableExtra)
mynames <- gsub(",", "<br>", names(mydf))
kbl(mydf,
escape=FALSE,
col.names = linebreak(mynames))
如果是pdf文件,下面的方法可行
mynames <- gsub("[,-]", "\n", names(mydf))
-完整代码-rmarkdown
---
title: "."
output: bookdown::pdf_document2
---
```{r chunk1, echo = FALSE}
library(kableExtra)
mydf <- data.frame(col0 =c(rep("z",5)),col1= c(rep(0,5)), col2= c(rep(1,5)))
colnames(mydf) <- c("name","aaaa, bbbb", "ccccccc, ddddd-dd")
mynames <- gsub(",", "\n", names(mydf))
kbl(mydf,
escape=FALSE,
col.names = linebreak(mynames))
```
-输出
我下面有 table:
mydf <- data.frame(col0 =c(rep("z",5)),col1= c(rep(0,5)), col2= c(rep(1,5)))
colnames(mydf) <- c("name","aaaa, bbbb", "ccccccc, ddddd-dd")
mynames <- sapply(c(colnames(mydf)), FUN = function(x) gsub("," , ",\\", x))
kbl(mydf,
escape=F,
col.names = linebreak(mynames))
我希望我的列名称在“,
”(逗号)之后换行到下一行。我尝试了 ",\\"
、",\"
和 ",\n"
。 none 正在工作。我正在制作一个 r markdown pdf 输出。
有什么建议或提示吗?
我们可以使用 HTML
标签 ("<br>"
) 为 HTML 文件创建换行符 - gsub/sub
是矢量化的,因此不需要循环在列名称的每个元素上
library(kableExtra)
mynames <- gsub(",", "<br>", names(mydf))
kbl(mydf,
escape=FALSE,
col.names = linebreak(mynames))
如果是pdf文件,下面的方法可行
mynames <- gsub("[,-]", "\n", names(mydf))
-完整代码-rmarkdown
---
title: "."
output: bookdown::pdf_document2
---
```{r chunk1, echo = FALSE}
library(kableExtra)
mydf <- data.frame(col0 =c(rep("z",5)),col1= c(rep(0,5)), col2= c(rep(1,5)))
colnames(mydf) <- c("name","aaaa, bbbb", "ccccccc, ddddd-dd")
mynames <- gsub(",", "\n", names(mydf))
kbl(mydf,
escape=FALSE,
col.names = linebreak(mynames))
```
-输出