向自定义管道函数添加列
Adding a column to custom piped function
我刚开始制作利用 R 中 %>%
的函数。
给定以下数据
sim <- tribble(~x,~n,1,1,1,2,1,3)
我想创建一个添加列的函数
>sim <- sim %>% mutate(sum = x+n)
>sim
# A tibble: 3 x 3
x n sum
<dbl> <dbl> <dbl>
1 1 1 2
2 1 2 3
3 1 3 4
到此为止
addr <- function(tbl, x, n){tbl <- mutate(sumr=tbl$x+tbl$n)}
sim <- tribble(~x,~n,1,1,1,2,1,3)
sim %>% addr(x,n)
问题是我没有在管道 table 上添加列。
我们可以使用整洁的方式创建一个函数
addr <- function(dat, col1, col2) {
col1 <- enquo(col1)
col2 <- enquo(col2)
dat %>%
mutate(sum = (!!col1) + (!!col2))
}
addr(sim, x, n)
# A tibble: 3 x 3
# x n sum
# <dbl> <dbl> <dbl>
#1 1 1 2
#2 1 2 3
#3 1 3 4
我刚开始制作利用 R 中 %>%
的函数。
给定以下数据
sim <- tribble(~x,~n,1,1,1,2,1,3)
我想创建一个添加列的函数
>sim <- sim %>% mutate(sum = x+n)
>sim
# A tibble: 3 x 3
x n sum
<dbl> <dbl> <dbl>
1 1 1 2
2 1 2 3
3 1 3 4
到此为止
addr <- function(tbl, x, n){tbl <- mutate(sumr=tbl$x+tbl$n)}
sim <- tribble(~x,~n,1,1,1,2,1,3)
sim %>% addr(x,n)
问题是我没有在管道 table 上添加列。
我们可以使用整洁的方式创建一个函数
addr <- function(dat, col1, col2) {
col1 <- enquo(col1)
col2 <- enquo(col2)
dat %>%
mutate(sum = (!!col1) + (!!col2))
}
addr(sim, x, n)
# A tibble: 3 x 3
# x n sum
# <dbl> <dbl> <dbl>
#1 1 1 2
#2 1 2 3
#3 1 3 4