首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dplyr 0.7 -将分组变量指定为字符串

dplyr 0.7 -将分组变量指定为字符串
EN

Stack Overflow用户
提问于 2017-08-01 23:57:43
回答 2查看 229关注 0票数 1

我有一些指定为字符串的变量名(例如,来自Shiny app的输入),我想在我的dplyr和ggplot2代码中使用它们,就像它们是变量一样。

我通过反复试验让它工作,但我觉得肯定有更好的方法。执行这些操作的更好方法是什么?

代码语言:javascript
运行
复制
library(rlang)
library(ggplot2)
library(dplyr)

someString <- "g1"

df <- tibble(
  g1 = c(1, 1, 2, 2, 2),
  g2 = c(1, 2, 1, 2, 1),
  a = sample(5), 
  b = sample(5)
)

my_summarise <- function(df, group_var) {
  print(group_var)

  df %>%
    group_by(!!group_var) %>%
    summarise(a = mean(a))
}

my_plot <- function(df, group_var) {
  print(group_var)

  ggplot(data = df %>% 
           group_by(!!group_var) %>%
           summarise(a = mean(a)), 
         aes_string(x = quo_name(group_var), y = "a")) +
    geom_bar(stat = "identity")
}

my_summarise(df, quo(UQ(sym(someString))))

my_plot(df, quo(UQ(sym(someString))))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-02 00:56:04

这两个选项中的任何一个都可能更简单:

代码语言:javascript
运行
复制
my_summarise <- function(df, group_var) {
  print(group_var)

  df %>%
    #Either works
    group_by_at(.vars = group_var) %>%
    #group_by(!!sym(group_var)) %>%
    summarise(a = mean(a))
}

my_summarise(df,someString)

my_plot <- function(df, group_var) {
  print(group_var)

  ggplot(data = df %>% 
           group_by_at(.vars = group_var) %>%
           #group_by(!!sym(group_var)) %>%
           summarise(a = mean(a)), 
         aes_string(x = group_var, y = "a")) +
    geom_bar(stat = "identity")
}

my_plot(df, someString)

...where您可以使用group_bygroup_by_at

票数 2
EN

Stack Overflow用户

发布于 2017-08-02 00:52:05

使用my_summarise(df, as.name(someString))进行呼叫怎么样?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45442513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档