簡體   English   中英

從 plyr 替換點 function

[英]Replacement of the dot function from plyr

如何轉換使用plyr function 指定的組向量. 例如.(group, sex)變成這樣的字符向量c("group", "sex")

我們使用 plyr 方法在舊版本的 R package 中指定組。 在新版本中,我們希望用戶使用字符串向量來指定組,但我們不想破壞以前使用點方法的代碼。

舊 function 示例:

library(plyr)

my_function_old <- function(df, grouping) {
  ddply(df, grouping, summarize,
        m = mean(mpg))
}

my_function_old(mtcars, .(cyl, vs))

新 function 示例:

library(dplyr)

my_function_new <- function(df, grouping) {
  df %>% 
    group_by(!!!syms(grouping)) %>% 
    summarise(m = mean(mpg))
}

my_function_new(mtcars, c("cyl", "vs"))

在新的 function 中,應使用字符串向量指定分組。 我想檢查用戶是否在新的 function 中使用舊的點表示法,在這種情況下,將用點指定的分組變量轉換為字符串向量。

使用enexpr

library(dplyr)

my_function <- function(df, grouping) {
  grouping <- as.character(enexpr(grouping))[-1]
  
  df %>% 
    group_by(!!!syms(grouping)) %>% 
    summarise(m = mean(mpg))
}

my_function(mtcars, c("cyl", "vs")) # this works
my_function(mtcars, .(cyl, vs)) # this also works

暫無
暫無

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

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