繁体   English   中英

在 dplyr 的函数中使用字符串

[英]Using strings in functions in dplyr

当我想在dplyr函数中使用字符串时,使用拥抱运算符{{ }}并没有达到预期的效果。

例如,假设我想以编程方式group_bydata.frame名称中找到的变量

library(tidyverse)
library(palmerpenguins)

palmerpenguins::penguins %>% 
  select(c(1, 2, 8)) %>% 
  names %>% 
  map(
    function(i)
      penguins %>%
        group_by({{ i }}) %>% 
        tally
  )

返回

[[1]]
# A tibble: 1 x 2
  `"species"`     n
  <chr>       <int>
1 species       344

[[2]]
# A tibble: 1 x 2
  `"island"`     n
  <chr>      <int>
1 island       344

但我想group_by传递给map的变量名

{{}}运算符不打算用于字符串,而是用于符号。 使用字符串,您可以执行

palmerpenguins::penguins %>% 
  select(c(1, 2, 8)) %>% 
  names %>% 
  map(
    function(i)
      penguins %>%
      group_by(!!rlang::sym(i)) %>% 
      tally
  )

或者

palmerpenguins::penguins %>% 
  select(c(1, 2, 8)) %>% 
  names %>% 
  map(
    function(i)
      penguins %>%
      group_by(.data[[i]]) %>% 
      tally
  )

后者是 tidyverse 作者目前首选的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM