[英]Using strings in functions in dplyr
当我想在dplyr
函数中使用字符串时,使用拥抱运算符{{ }}
并没有达到预期的效果。
例如,假设我想以编程方式group_by
在data.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.