knitr::kable table 中的灵活列名
Flexible Column names in knitr::kable table
问题:
有很多变量的大 df。尝试使用与原始变量不同的列名创建摘要 kable table。
library(knitr)
library(dplyr)
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 |
我希望能够 select 特定的列,而不必通过以下方式手动重命名它们:
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 |
有没有办法只指定一次我希望 "Sepal.Length" 成为 "Sepal Length." 这样,如果我包含某个变量,我的代码将识别该变量并将其重命名为新列自动命名,无需我返回并手动完成?
为什么不预先重命名列,并在随后对 filter
和 select
的调用中使用格式化的列名称?
library(tidyverse)
rename(iris, `Sepal length` = Sepal.Length, `Sepal width` = Sepal.Width) %>%
filter(Species == "setosa") %>%
select(contains("Sepal"), Species) %>%
head() %>%
knitr::kable()
| 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 |
问题:
有很多变量的大 df。尝试使用与原始变量不同的列名创建摘要 kable table。
library(knitr)
library(dplyr)
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 |
我希望能够 select 特定的列,而不必通过以下方式手动重命名它们:
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 |
有没有办法只指定一次我希望 "Sepal.Length" 成为 "Sepal Length." 这样,如果我包含某个变量,我的代码将识别该变量并将其重命名为新列自动命名,无需我返回并手动完成?
为什么不预先重命名列,并在随后对 filter
和 select
的调用中使用格式化的列名称?
library(tidyverse)
rename(iris, `Sepal length` = Sepal.Length, `Sepal width` = Sepal.Width) %>%
filter(Species == "setosa") %>%
select(contains("Sepal"), Species) %>%
head() %>%
knitr::kable()
| 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 |