我有以下数据框:
dat <- data.frame(time = runif(20),
group1 = rep(1:2, times = 10),
group2 = rep(1:2, each = 10),
group3 = rep(3:4, each = 10))
我现在正在编写一个my_function
采用以下形式的函数:
my_function(data, time_var = time, group_vars = c(group1, group2))
如果我没记错的话,我将 group_vars 作为符号传递给我的函数,对吗?
但是,在我的函数中,我想首先进行一些错误检查,如果传递给函数的变量存在于数据中。对于时间变量,我成功了,但我不知道如何将 group_vars 列表转换为字符串向量,使其看起来像c("group1", "group2")
.
我当前的功能如下:
my_function <- function (data, time_var = NULL, group_vars = NULL)
{
time_var <- enquo(time_var)
time_var_string <- as_label(time_var)
group_vars <- enquos(group_vars)
# is "time" variable part of the dataset?
if (!time_var_string %in% colnames(data))
{
stop(paste0("The variable '", time_var_string, "' doesn't exist in your data set. Please check for typos."))
}
}
我想扩展后一部分,以便我也可以以!group_vars %in% colnames(data)
. 我知道我可以将 group_var 变量作为字符串向量传递给函数,但出于其他原因我不想这样做。