r - 在 knitr::kable() 中设置自适应 col.names
问题描述
请考虑以下事项。我开始使用 R markdown 编写可重现的文档,并希望得到一些报告的输出。由于我正在使用多个,data.frame
并且它们的列名不是很丰富或漂亮,我想col.names
使用knitr::kable()
.
问题:由于data.frame
它相当大并且我只想在整个报告中显示特定的列,我希望新的列名根据我选择的列自动出现。
我可以手动执行此操作,如下例所示:
library(knitr)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
knitr::kable(iris %>% head(),
col.names = c("Sepal length", "Sepal width", "Petal length",
"Petal width", "Species"))
| Sepal length| Sepal width| Petal length| Petal width|Species |
|------------:|-----------:|------------:|-----------:|:-------|
| 5.1| 3.5| 1.4| 0.2|setosa |
| 4.9| 3.0| 1.4| 0.2|setosa |
| 4.7| 3.2| 1.3| 0.2|setosa |
| 4.6| 3.1| 1.5| 0.2|setosa |
| 5.0| 3.6| 1.4| 0.2|setosa |
| 5.4| 3.9| 1.7| 0.4|setosa |
但是,当我将其减少data.frame
为仅显示某些列时,我必须col.names
再次手动设置(此处删除col.names
我不再需要的)以不收到错误消息:
knitr::kable(iris %>% filter(Species == "setosa") %>%
select(Sepal.Length, Sepal.Width, Species) %>% head(),
col.names = c("Sepal length", "Sepal width", "Species"))
| Sepal length| Sepal width|Species |
|------------:|-----------:|:-------|
| 5.1| 3.5|setosa |
| 4.9| 3.0|setosa |
| 4.7| 3.2|setosa |
| 4.6| 3.1|setosa |
| 5.0| 3.6|setosa |
| 5.4| 3.9|setosa |
问题:有没有办法克服这个问题,例如switch
只使用和指定一次"Sepal.Length" = "Sepal length"
等?这还应该考虑到我创建的任何新列,例如通过dplyr::mutate()
保持新添加的列名原样或在文档开头指定它而不在每次该列不(尚)存在时返回错误.
解决方案
您可以将列名修改为 data.frames 并使用列号来指定列select()
如:
library(dplyr)
colnames(iris) <- c("Sepal length", "Sepal width", "Petal length",
"Petal width", "Species")
knitr::kable(iris %>% head() %>% select(1,2,5), format = "markdown")
| Sepal length| Sepal width|Species |
|------------:|-----------:|:-------|
| 5.1| 3.5|setosa |
| 4.9| 3.0|setosa |
| 4.7| 3.2|setosa |
| 4.6| 3.1|setosa |
| 5.0| 3.6|setosa |
| 5.4| 3.9|setosa |
由reprex 包(v0.2.0.9000)于 2018 年 8 月 21 日创建。
推荐阅读
- c# - 如何在 .NET Core 3.1 中用 C# 检索域用户的所有本地组?
- python-3.x - KivyMD 中 MDDropdownMenu 中的定位错误
- kotlin - 意外标记(使用 ; 分隔同一行中的表达式)
- tsql - 如何从 TSQLT 转换为 HL7 (V2) 格式
- database - MongoDB:索引属性上的 $lookup 与非索引属性上的 $in
- python - 如何在 Python 上使用 Tweepy 创建 Twitter 线程
- python - Python正则表达式替换字符串和句点之间的所有内容,后跟括号
- javascript - 在 javascript 中合并 JsonConvert 的 null
- r - 由于 .key 已被弃用,如何重命名 nest() 中的数据列?
- sql - SQL CASE 语句 - 返回第一个匹配项(忽略其他匹配项)