library(palmerpenguins)tidyverseとrlangを組み合わせる
これまで、tidyverseの各パッケージで利用可能な関数について紹介してきました。最期に、tidyverseの関数を組み合わせて独自の関数を定義する際に覚えておくと捗る、rlangパッケージとの連携を導入します。
rlangとは、R言語におけるプログラミングのためのフレームワークとAPIを提供するパッケージの一種です。
mtcars |>
count(gear) |>
ggplot() +
aes(gear, n) +
geom_bar(stat = "identity")
diamonds |>
count(cut) |>
ggplot() +
aes(cut, n) +
geom_bar(stat = "identity")
penguins |>
count(species) |>
ggplot() +
aes(species, n) +
geom_bar(stat = "identity")my_barplot <- function(data, var) {
data |>
count(var) |>
ggplot() +
aes(var, n) +
geom_bar(stat = "identity")
}my_barplot(mtcars, gear)Error in `count()`:
! Must group by variables found in `.data`.
✖ Column `var` is not found.
{{ (カリーカリー)演算子
my_barplot <- function(data, var) {
data |>
count({{ var }}) |>
ggplot() +
aes({{ var }}, n) +
geom_bar(stat = "identity")
}
my_barplot(mtcars, gear)my_barplot(diamonds, cut)
my_barplot(penguins, species)my_barplot <- function(data, var) {
data |>
count({{ var }}) |>
ggplot() +
aes({{ var }}, n) +
geom_bar(stat = "identity")
}penguins |>
count(species) |>
mutate(species = fct_reorder(species, n)) |>
ggplot() +
aes(species, n) +
geom_bar(stat = "identity"):=
my_barplot2 <- function(data, var, ...) {
data |>
count({{ var }}) |>
mutate({{ var }} := fct_reorder({{ var }}, n)) |>
ggplot() +
aes({{ var }}, n, fill = {{ var }}) +
geom_bar(stat = "identity",
show.legend = FALSE,
...)
}
my_barplot2(penguins, species)
my_barplot2(penguins, species, fill = "tomato")library(jmastats)
crossing(year = seq.int(2020, 2022),
month = seq.int(7, 9),
block_no = c("47895", "47891", "47887", "47893")) |>
purrr::pmap(
function(block_no, year, month, ...) {
jmastats::jma_collect(item = "monthly",
block_no = {{ block_no }},
year = {{ year }},
month = {{ month }}) |>
dplyr::mutate(block_no = {{ block_no }})
}
) |>
dplyr::bind_rows()