2017-06-20 16 views
2

を使用した:「...グループへの未知の変数をによって:X」私は、ローカル関数の例をdplyrのGROUP_BYを使用しようとしています機能でdplyr GROUP_BY

testFunction <- function(df, x) { 
    df %>% 
group_by(x) %>% 
summarize(mean.Petal.Width = mean(Petal.Width)) 
} 

testFunction(iris, Species) 

と私はエラーを取得する はI」私はgroup_by_を試してみて、それは私にデータセット全体の要約を与えます。 誰かが私がこれをどのように修正できるかを手がかりにしていますか?

ありがとうございます!

答えて

1

enquoは、文字列を受け取り、(UQ又は!!)をunquotingによって評価取得したquosureに変換dplyrから新しいenquoで動作する1つの方法は、group_byであり、mutatesummarise

library(dplyr) 
testFunction <- function(df, x) { 
x <- enquo(x) 
    df %>% 
    group_by(!! x) %>% 
    summarize(mean.Petal.Width = mean(Petal.Width)) 
} 

testFunction(iris, Species) 
# A tibble: 3 x 2 
#  Species mean.Petal.Width 
#  <fctr>   <dbl> 
#1  setosa   0.246 
#2 versicolor   1.326 
#3 virginica   2.026 
+1

cool。それはうまくいきます、ありがとう。これをカバーする参照URLがありますか? – RoseS

+0

@RoseS [ここ](http://dplyr.tidyverse.org/articles/programming.html#quoting)をチェックすることができます。 – akrun

0

私はそれがこのように動作するようになった:

testFunction <- function(df, x) { 
         df %>% 
         group_by(get(x)) %>% 
         summarize(mean.Petal.Width = mean(Petal.Width)) 
       } 

testFunction(iris,"Species") 

私はget(x)xを変更し、testFunction(iris,...)"Species"からSpecies。ここ

+0

私は20のものを試したので、なぜそれが働くのか尋ねないでください;) – CPak

+0

hmmm、私は 'get(x)'が助けてくれると思っています。今私はエラーが発生しました "....オブジェクト"種は "見つかりません"ので、関数を呼び出すときに引用符を使用するかどうかで動作するようにはできません。それがなぜあなたのために働くのか考えていますか?ハ!私はちょうど見た "...それはどのように動作するか尋ねないでください" – RoseS

+0

'dplyr'がロードされていますか?更新された 'dplyr'?あなたは、akrunの答えを試すこともできます。これは同等でなければなりません。 – CPak

関連する問題