【问题标题】:Replacement of the dot function from plyr从 plyr 替换点函数
【发布时间】:2020-08-06 15:57:29
【问题描述】:

如何将使用plyr 函数.(例如.(group, sex))指定的组向量转换为类似c("group", "sex") 的字符向量。

我们使用 plyr 方法在旧版本的 R 包中指定组。在新版本中,我们希望用户使用字符串向量来指定组,但我们不想破坏以前使用点方法的代码。

旧函数示例:

library(plyr)

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

my_function_old(mtcars, .(cyl, vs))

新功能示例:

library(dplyr)

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

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

在新函数中,应该使用字符串向量来指定分组。我想检查用户是否在新函数中使用旧的点表示法,并在这种情况下将用点指定的分组变量转换为字符串向量。

【问题讨论】:

  • 你能举个例子吗?

标签: r dplyr plyr


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多