首页 > 解决方案 > UDF 中的 dplyr 命令

问题描述

我需要将以下 dplyr 命令包装在 R 用户定义的函数中。

它应该有 4 个参数 -

代码 -

val <- Cash_Collateral %>% dplyr::filter(Collateral == 'Non-Residential') %>% 
      mutate(LRF_Net_ActualVsForecast = scales::percent(LRF_Net_ActualVsForecast, accuracy = 0.1)) %>% 
      select(LRF_Net_ActualVsForecast) %>% pull()

标签: rdplyr

解决方案


您可以在基础 R 中执行此操作:

f <- function(df, filter, var, FUN, ...)
{
  filter <- as.list(match.call())$filter
  ss <- eval(filter, envir = df, enclos = parent.frame())
  FUN(subset(df, ss)[[deparse(substitute(var))]], ...)
}

例如:

df <- data.frame(a = 1:5, b = letters[1:5])
df
#>   a b
#> 1 1 a
#> 2 2 b
#> 3 3 c
#> 4 4 d
#> 5 5 e

df %>% f(filter = a > 1 & a < 5, var = b, FUN = paste, collapse = " ")
#> [1] "b c d"

推荐阅读