Извините, я знаю, что заголовок не самый лучший.
Итак, я пытаюсь написать функцию, которая проверяет, совпадает ли вывод двух функций.Я пытаюсь сделать это с purrr::invoke_map()
.Тем не менее, я изо всех сил пытаюсь заставить его работать с любой функцией, которая использует enquo()
.
Я предполагаю, что проблема в том, что аргументы оцениваются, прежде чем я хочу, чтобы они были оценены.
library(tidyverse)
check_output <- function(function_list, param_list = NULL){
param_list <- list(param_list)
output <- invoke_map(.f = function_list, .x = param_list)
identical(output[1], output[2])
}
check_output(function_list = list(cumprod, cumsum), # This works
param_list = list(x = iris$Sepal.Length))
check_output(function_list = list(cumsum, cumsum), # This works
param_list = list(x = iris$Sepal.Length))
m <- function(data, col_name){ # Enquo test function
col_name <- enquo(col_name)
data %>%
select(!!col_name)
}
n <- m
n(iris, Species) # Seeing if the functions work
check_output(function_list = list(m, n), # The call doesn't work
param_list = list(data = iris, col_name = Species))