【发布时间】:2023-02-03 00:45:30
【问题描述】:
我正在尝试在函数中使用 case_when() 。该函数的想法是获取指定的列,在其中搜索特定的术语,然后如果该术语在该列中则返回 true,否则返回 false。
但是,我正在努力尝试使 case_when 引用在函数级别传入的列 - 至少,我成功完成它的方式似乎有点老套,因为我传入了一个字符串,然后将其转换为符号,然后将其传递给 case_when。有没有一种方法可以直接在 case_when 中更动态地引用列?:
test_tibble <- tibble(col_a = c("Here I am", "Nope", "Nothing", "I am here"))
test_function <- function(target_item,
data = test_tibble,
variable_name,
prefix = "check_") {
variable_name <- as.symbol(variable_name)
data <-
data %>%
mutate("{prefix}{target_item}" := case_when(grepl(target_item, {{variable_name}}) ~ TRUE,
TRUE ~ FALSE))
return(data)
}
test_function("ere", variable_name = "col_a")
在实际用例中,我可能需要引用许多不同的命名列,因此我可以在函数顶部指定列名很重要。
【问题讨论】:
-
您要将列名作为字符串还是作为符号传递?