在knitr :: kable()

时间:2018-08-20 14:23:17

标签: r r-markdown kable reproducible-research

请考虑以下内容。我开始用R降价来编写可复制的文档,并希望输出一些报告。由于我正在使用多个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()例如创建的任何新列,方法是保持新添加的列名不变,或者在文档开头也指定该名称,而不必每次都在此列抛出错误还不存在。

1 个答案:

答案 0 :(得分:0)

您可以将列名称修改为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 package(v0.2.0.9000)创建于2018-08-21。