簡體   English   中英

如何將 function 參數粘貼到 function 的 dplyr 中的 .names?

[英]How to glue a function argument to .names in dplyr's across function?

我正在嘗試使用{col}和 function arguments 中的一個來命名across function 的 output

library(tidyverse)

mean_by <- function(data, by, var, prefix = "avg") {
  data %>% 
    group_by({{ by }}) %>% 
    summarise(across({{ var }}, mean, .names = "{prefix}_{col}"))
}

但是,在對iris %>% mean_by(Species, Sepal.Width)進行測試時,出現無法找到 object 'prefix' 的錯誤。 .names中的粘合語法對我來說沒問題,所以我認為這是一個范圍問題? .names參數只能訪問傳遞給across內容嗎?

我相信.names in across只允許引用{col}{fn} inside across ,但你可以嘗試粘貼你的prefix

> library(tidyverse)
> mean_by <- function(data, by, var, prefix = "avg") {
  data %>% 
    group_by({{ by }}) %>% 
    summarise(across({{ var }}, mean, .names = paste0(prefix,"_{col}")))
 }
> iris %>% mean_by(Species, Sepal.Width)
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 2
  Species    avg_Sepal.Width
  <fct>                <dbl>
1 setosa                3.43
2 versicolor            2.77
3 virginica             2.97

暫無
暫無

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

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