使用 difftime 和 dplyr 设置函数的参数
Set paramenter of a function using difftime and dplyr
如何在下面的函数中设置参数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 的参数并将其设置为参数,例如单位 = "months"。
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)
只添加 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")
.
如何在下面的函数中设置参数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 的参数并将其设置为参数,例如单位 = "months"。
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)
只添加 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")
.