请考虑以下事项。我开始使用 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()
保持新添加的列名原样或在文档开头指定它而不在每次该列不(尚)存在时返回错误.