[英]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.