使用difftime和dplyr设置函数的参数

时间:2019-04-01 11:06:15

标签: r dplyr rlang tidyeval

如何在以下函数中将参数units ="mins"设置为参数?

这只是数据框:

library(tidyverse)

u <- runif(10, 0, 60) 
w <- runif(10, 0, 60) 

df <- tibble(time_1 = as.POSIXct(u, origin = "2019-02-03 08:00:00"),
       time_2 = as.POSIXct(w, origin = "2019-02-03 08:30:00"))

这是我的职责。我希望能够更改difftime的paramenter并将其设置为参数,例如单位=“月”。

time_diff <- function(df, stamp1, stamp2){

  stamp1 <- enquo(stamp1)
  stamp2 <- enquo(stamp2)

  name <- paste0(quo_name(stamp1), "_", quo_name(stamp2))

  df %>% 
    mutate(!!name := difftime(!!stamp1, !!stamp2, units="mins"))
}

df %>% 
  time_diff(time_2, time_1)

但是我想要这样的东西:

df %>% 
      time_diff(time_2, time_1, mins)

1 个答案:

答案 0 :(得分:1)

仅添加units参数怎么样?例如

time_diff <- function(df, stamp1, stamp2, units="mins"){

  stamp1 <- enquo(stamp1)
  stamp2 <- enquo(stamp2)

  name <- paste0(quo_name(stamp1), "_", quo_name(stamp2))

  df %>% 
    mutate(!!name := difftime(!!stamp1, !!stamp2, units=units))
}

然后您可以进行df %>% time_diff(time_2, time_1, "mins")