【问题标题】:write function with dplyr用 dplyr 编写函数
【发布时间】:2018-06-11 12:22:31
【问题描述】:

我有这个功能

var_sup  <- function(var1,var2)
    {
      df$RD <- ifelse(df[var1]>df[var2],1,0)
      df$RD <- as.numeric(df$RD)
      return(df)
    }

我想用 dplyr 写来使用它:就像那样

var_sup(num,num2) 没有“”!

compare_sup <- function (var1,var2) {
  # capture the argument without evaluating it
  var1 <- quo_name(enquo(var1))
  var2 <- quo_name(enquo(var2))
  # construct the expression
   df %>% 
      mutate(RD = ifelse(!!var1 > !!var2 ,1,0))
                                    }

我试过了,但我有一个错误

谢谢

【问题讨论】:

    标签: r function dplyr


    【解决方案1】:

    以下对我有用:

    compare_sup <- function (var1,var2) {
      require(tidyverse)
      # capture the argument without evaluating it
      var1 <- enquo(var1)
      var2 <- enquo(var2)
      # construct the expression
      mtcars %>% 
        mutate(RD = ifelse(!!var1 > !!var2, 1, 0))
    }
    
    
    compare_sup(drat, wt) %>% head
    #   mpg cyl disp  hp drat    wt  qsec vs am gear carb RD
    #1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4  1
    #2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4  1
    #3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1  1
    #4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1  0
    #5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2  0
    #6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1  0
    

    我基本上从函数中删除了quo_name()(并使用 mtcars 作为数据集)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      相关资源
      最近更新 更多