将列添加到自定义管道功能

时间:2017-10-18 02:55:20

标签: r dplyr magrittr

我很擅长制作利用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)

问题是我没有在管道表上添加列。

1 个答案:

答案 0 :(得分:1)

我们可以使用整洁的方式创建一个函数

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