【问题标题】:R knitr::kable: avoid text wrap of one columnR knitr::kable:避免一列的文本换行
【发布时间】:2018-11-26 08:46:46
【问题描述】:

我正在 rmarkdown/html 文档中创建一个表格,其中的列由 knitr 参数动态选择。

---
output: html_document
---

```{r echo=FALSE}
library(knitr)
header <- c("Col1", "Col2", "Col3", "Col4", "Col6") # actually comes from knitr parameter
testdata <- data.frame(Col1 = c("text", "very long long long long long    long long long long long text", "texttext"),
             Col2 = c("looooooooooooooooooooooooooooooooooooooooooong long long long long long text", "textxyz", "abc"),
             Col3 =  1:3,
             Col4 = c("2018-11-01", "2018-11-02", "2018-11-03"),
             Col5 = c(100000, 200000, 300000),
             Col6 = c(123, 456, 789))
testdata <- testdata[,colnames(testdata) %in% header]
kable(testdata)
```

如果我编织它,Col4 中的日期就会被包裹起来。如何避免只为 Col4 列换行,而不更改列名和表格的总宽度?

Col4                Col4
------              ------
2018                2018-11-01
-11-01      ===>    2018-11-02
2018                2018-11-03
-11-02
2018
-11-03

【问题讨论】:

    标签: r r-markdown knitr


    【解决方案1】:

    你可以使用kableExtra::column_spec:

    library(kableExtra)
    kable(testdata) %>% column_spec(column = 4, width = "100px")
    

    【讨论】:

    • 由于列号可能会改变(动态选择列),完整的答案应该包含类似col_fix &lt;- which(colnames(testdata)=="Col4") 的内容,以获取正确的列并通过column_spec(column=col_fix, width="100px") 传递该数字。好吧,您给出了核心答案并获得了支票。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2017-08-21
    • 2018-04-20
    相关资源
    最近更新 更多