【发布时间】:2019-04-15 17:44:11
【问题描述】:
我希望将单个参数字符串拆分为两个参数,并在函数的不同部分中使用每个参数。
是否可以使用 quasiquotation (!!) 或其他 rlang 函数来做到这一点?
谢谢!
数据:
person <- tibble(id = 1, age = 20)
friends <- tibble(id = c(2, 3, 4, 5), age = c(48, 29, 20, 48))
(无功能)功能:
different_age_friends <- function(condition, person = person, friends = friends ) {
person <- person
friends <- friends
condition <- str_split(condition, " ~ ", simplify = T)
condition_statement <- condition[1]
filter_statement <- condition[2]
if(!!condition_statement) {
different_age_friends <- friends %>%
filter(!!filter_statement)
}
return(return_same_age_friends)
}
致电:
different_age_friends(condition = "age == 20 ~ age == 48")
期望的输出
id age
2 48
5 48
【问题讨论】:
-
这并不能解决问题,但您有
condition = TRUE在您想要condition == TRUE或只是condition的地方进行比较 -
另外,我不清楚条件和过滤器之间的区别。我不明白这两种类型的陈述之间有什么本质上的不同。您是否尝试针对
person测试条件,然后如果为真,则使用第二部分过滤friends? -
是的,谢谢你的澄清!