9
比較的シンプルなラッパーを作成してプロットを作成しようとしましたが、グループ化変数の整頓評価を指定する方法はありません...
変数をファセットしてグループ化することはできません。 ..Tidy評価プログラミングとggplot2
my_plot <- function(df = starwars,
select = c(height, mass),
...){
results <- list()
## Tidyeval arguments
quo_select <- enquo(select)
quo_group <- quos(...)
## Filter, reshape and plot
results$df <- df %>%
dplyr::filter(!is.na(!!!quo_group)) %>%
dplyr::select(!!quo_select, !!!quo_group) %>%
gather(key = variable, value = value, !!!quo_select) %>%
## Specify what to plot
ggplot(aes(value)) +
geom_histogram(stat = 'count') +
facet_wrap(~variable, scales = 'free', strip.position = 'bottom')
return(results)
}
## Plot height and mass as facets but colour histograms by hair_color
my_plot(df = starwars, select = c(height, mass), hair_color)
どのように違いがあるのですか?hair_color
?通常、これは私が(私は思う)私が見たり、持って働くことができない代わりに
をaes_()
を使用する必要があります(つまり、quo_group
)aes()
内で行われますが、これはquos()
の結果を使用しているので、今Programming with dplyr数回読んで私は間違っている。
誰かが私のエラーを指摘できますか/私に方法を教えてください。
2番目の関数では、なぜ 'ggplot(aes(etc))'という2行がありますか? – FlorianGD
'quos(...)'の代わりに 'quo(...)'を使うと、 'aes_' a la' aes_(〜value、color = quo_group) 'で問題なく動作します。しかし、何かのために変数をグループ化する必要があるかもしれません。 – aosmith
ああ、わかりました。 'quos'はリストを返します。したがって、 'quos(...)'から得られる1要素リストの最初の要素だけを使いたい場合は 'aes_'に' color = quo_group [[1]] 'が必要です。 – aosmith