gpt4 book ai didi

R dplyr : how to use . .. with summary(across()) when ... 将引用数据中的变量名称?

转载 作者:行者123 更新时间:2023-12-03 21:09:45 27 4
gpt4 key购买 nike

我想使用 summarize 有一个灵活的功能其中:

  • 聚合函数由用户
  • 给出
  • 聚合函数可能会使用更多参数来引用数据本身中的变量。

  • 一个很好的例子是用户提供 fun=weighted.mean()并指定权重参数 w .
    现在,我正在尝试使用 ... .问题是我没有找到方法来获得 ...引用数据框中的变量?下面的例子是使用 across() 给出的,但如果我改为使用 summarize_at() 也会发生同样的情况
    谢谢!!
    library(tidyverse)
    fo1 <- function(df, fun=mean, ...){
    df %>%
    group_by(Species) %>%
    summarise(across(starts_with("sepal"), fun, ...))
    }

    fo1(iris)
    #> `summarise()` ungrouping output (override with `.groups` argument)
    #> # A tibble: 3 x 3
    #> Species Sepal.Length Sepal.Width
    #> <fct> <dbl> <dbl>
    #> 1 setosa 5.01 3.43
    #> 2 versicolor 5.94 2.77
    #> 3 virginica 6.59 2.97
    fo1(iris, fun=weighted.mean)
    #> `summarise()` ungrouping output (override with `.groups` argument)
    #> # A tibble: 3 x 3
    #> Species Sepal.Length Sepal.Width
    #> <fct> <dbl> <dbl>
    #> 1 setosa 5.01 3.43
    #> 2 versicolor 5.94 2.77
    #> 3 virginica 6.59 2.97
    fo1(iris, fun=weighted.mean, w=Petal.Length)
    #> Error: Problem with `summarise()` input `..1`.
    #> x object 'Petal.Length' not found
    #> ℹ Input `..1` is `across(starts_with("sepal"), fun, ...)`.
    #> ℹ The error occurred in group 1: Species = "setosa".
    fo1(iris, fun=weighted.mean, w=.data$Petal.Length)
    #> Error: Problem with `summarise()` input `..1`.
    #> x 'x' and 'w' must have the same length
    #> ℹ Input `..1` is `across(starts_with("sepal"), fun, ...)`.
    #> ℹ The error occurred in group 1: Species = "setosa".
    创建于 2020-11-10 由 reprex package (v0.3.0)

    最佳答案

    您需要传递附加参数的确切值。 .data$Petal.LengthNULL .

    library(dplyr)

    fo1 <- function(df, fun=mean, ...){
    df %>%
    summarise(across(starts_with("sepal"), fun, ...))
    }


    fo1(iris, fun=weighted.mean, w= iris$Petal.Length)
    # Sepal.Length Sepal.Width
    #1 6.180167 2.970197

    关于R dplyr : how to use . .. with summary(across()) when ... 将引用数据中的变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64778772/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com