【发布时间】:2018-11-17 16:31:37
【问题描述】:
我正在努力使用 dplyr 和 mutate 进行编程。
下面是一个可重现的例子。
library(tidyverse)
test <- tibble(a=1:10, b=1:10)
mute_function <- function(var, table) {
quo_var <- enquo(var)
sub_tb <-
table %>%
dplyr::select(!!quo_var, b) %>%
mutate(new_var=!!quo_var)
return(sub_tb)
}
应用函数时
mute_function(var = "a", table = test)
我明白了:
# A tibble: 10 x 3
a b new_var
<int> <int> <chr>
1 1 1 a
2 2 2 a
3 3 3 a
4 4 4 a
5 5 5 a
6 6 6 a
7 7 7 a
8 8 8 a
9 9 9 a
10 10 10 a
我想获得一个新变量,它结合了 a 和其他变量的值。
在上述情况下,我期望 new_var 与 a 相同。
显然,以下方法不起作用:
mute_function <- function(var, table) {
quo_var <- enquo(var)
sub_tb <-
table %>%
dplyr::select(!!quo_var, b) %>%
mutate(new_var=!!quo_var/b)
return(sub_tb)
}
mute_function(var = "a", table = test)
我不明白为什么我一直在仔细阅读 dplyr vignette 进行编程。
提前感谢您的帮助
【问题讨论】: