2

関数のバングバング演算子がgrp引数の引用符を外していない理由がわかりません。どんな助けでも大歓迎です!

library(dplyr)

test_func <- function(dat, grp){
  dat %>%
    group_by(!!grp) %>%
    summarise(N =  n())
}

test_func(dat = iris, grp = "Species")

種ごとにグループ化する代わりに、データ全体の要約を生成するだけです。 出力

4

1 に答える 1

3

文字列を渡す場合は、symbol に変換して評価します ( !!)

test_func <- function(dat, grp){
 dat %>%
    group_by(!! rlang::ensym(grp)) %>%
    summarise(N =  n(), .groups = 'drop')
 }

-テスト

test_func(dat = iris, grp = "Species")
# A tibble: 3 x 2
#  Species        N
#* <fct>      <int>
#1 setosa        50
#2 versicolor    50
#3 virginica     50

または別のオプションを使用することですacross

test_func <- function(dat, grp){
    dat %>%
       group_by(across(all_of(grp))) %>%
       summarise(N =  n(), .groups = 'drop')
 }
于 2021-03-16T17:54:40.667 に答える