相关疑难解决方法(0)

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助.

您有什么建议创建优秀示例的提示?如何以文本格式粘贴中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput(),dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外c,df,data等?

怎样才能成为一位伟大的重复的例子?

r r-faq

2474
推荐指数
23
解决办法
28万
查看次数

用准引号将参数列表传递给函数

我试图用R编写一个函数,该函数根据分组变量汇总数据帧。分组变量作为列表给出并传递给group_by_at,我想对其进行参数化。

我现在正在做的是这样的:

library(tidyverse)

d = tribble(
  ~foo, ~bar, ~baz,
  1, 2, 3,
  1, 3, 5
  4, 5, 6,
  4, 5, 1
)

sum_fun <- function(df, group_vars, sum_var) {
  sum_var = enquo(sum_var)
  return(
    df %>% 
      group_by_at(.vars = group_vars) %>% 
      summarize(sum(!! sum_var))
  )
}

d %>% sum_fun(group_vars = c("foo", "bar"), baz)
Run Code Online (Sandbox Code Playgroud)

但是,我想这样调用该函数:

d %>% sum_fun(group_vars = c(foo, bar), baz)
Run Code Online (Sandbox Code Playgroud)

这意味着不应在调用中评估分组变量,而应在函数中评估分组变量。我将如何重写该功能以启用该功能?

我试过enquo像summary变量一样使用,然后替换group_vars!! group_vars,但这会导致此错误:

Error in !group_vars : invalid argument type
Run Code Online (Sandbox Code Playgroud)

使用group_by(!!!group_vars)收益:

Column `c(foo, …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyeval

3
推荐指数
1
解决办法
202
查看次数

标签 统计

r ×2

dplyr ×1

r-faq ×1

tidyeval ×1