For the qic()
function, how does one specify columns of the input data frame that are stored in string variables?
Below I attempt multiple ways to pass the "y" parameter. Given that qicharts2 is based on ggplot2 I tried some options resembling quoting for ggplot2. All failed.
my_fun <- function(y){
require(qicharts2)
qic(x = i,
y = .data[[y]], # Hoping it works like ggplot2.
n = n,
data = nhs_accidents,
chart = 'p',
title = 'Proportion of patients seen within 4 hours',
ylab = NULL,
xlab = 'Week #')
}
my_var <- "r"
my_fun(my_var)
Error: ! Can't subset
.data
outside of a data mask context. Runrlang::last_trace()
to see where the error occurred.
Here are some other ways I tried to define the parameter along with the errors.
y = as.symbol(my_var)
Error in stats::complete.cases(y, n) : invalid 'type' (symbol) of argument
y = {{my_var}}
Error in if (y.name == "NULL") y.name <- deparse(substitute(x)) : the condition has length > 1
y = rlang::as_label(my_var)
Error in stats::complete.cases(y, n) : not all arguments have the same length
This works for me:
my_fun <- function(y_){
require(qicharts2)
qic(x = i,
y = eval(parse(text = y_)),
n = n,
data = nhs_accidents,
chart = 'p',
title = 'Proportion of patients seen within 4 hours',
ylab = NULL,
xlab = 'Week #')
}
my_var <- "r"
my_fun(my_var)