簡體   English   中英

在函數中使用dplyr group_by

[英]Using dplyr group_by in a function

我試圖在本地函數中使用dplyr的group_by,例如:

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

testFunction(iris, Species)

我得到一個錯誤“...未知變量分組依據:x”我嘗試了group_by_,它給了我整個數據集的摘要。 有人知道如何解決這個問題嗎?

提前致謝!

這里是新的工作方法之一enquodplyr ,其中enquo采取串並轉換成quosure其獲取評估由unquoting( UQ!!中) group_bymutatesummarise等。

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

我讓它像這樣工作:

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

testFunction(iris,"Species")

我將x更改為get(x) ,將Species更改為testFunction(iris,...) "Species" testFunction(iris,...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM