R/filter_portfolio.R

Defines functions filter_portfolio

Documented in filter_portfolio

#' Filter portfolio
#' 
#' Filter an as_portfolio table with any number of filter conditions. Each condition is a separate argument, wrapped in quotations.
#' @return A filtered as_portfolio table
#' @import dplyr
#' @export
#' @examples
#' fp <- filter_portfolio(portfolio = as_portfolio)
#' fp <- filter_portfolio(portfolio = as_portfolio, 'ifc_investee_pct == 100', 'project_name != "SI Aureos GTAA"')
#' fp <- filter_portfolio(portfolio = as_portfolio, 'ifc_investee_pct == 100', 'project_name != "SI Aureos GTAA"')

filter_portfolio <- function(portfolio, ...){
  arguments <- c(as.list(environment()), 
                                      list(...))
  if(length(arguments) == 1){
    return(portfolio)
  }
  arguments <- arguments[2:length(arguments)]
  arguments <- unlist(arguments)
  arguments <- paste0(arguments, collapse = ' | ')
  
  portfolio <- portfolio %>%
    dplyr::filter_(arguments)
  # To treat as and statements
  # for(i in 1:length(arguments)){
  #   portfolio <- portfolio %>%
  #     dplyr::filter_(arguments[i])
  # }
  return(portfolio)
}
databrew/portfoliodash documentation built on May 3, 2019, 1:47 p.m.