0

以下をご検討ください。Rマークダウンで再現可能なドキュメントを書き始め、レポートの出力が必要です。私は複数で作業しており、それらの列名はあまり有益でなく、きれいでもないので、 で引数data.frameを利用したいと思います。col.namesknitr::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()これは、たとえば、新しく追加された列名をそのまま保持するか、この列が (まだ) 存在しないたびにエラーをスローすることなくドキュメントの先頭に指定することによって、作成する新しい列も考慮する必要があります。.

4

1 に答える 1