【发布时间】:2021-04-09 08:21:50
【问题描述】:
我一直在阅读整理的评估书、几个问题和其他一些资源,但我仍然找不到直接的答案。
假设我在 R 中有一个公式对象,比如 x ~ y + z,和一个函数 f,我定义如下。
f % 选择(这里的东西) }
我希望评估 f(df, a_formula) 以得出与 df %>% select(x, y, z) 相同的结果,而无需手动指定公式组件。
我知道rlang 有一些函数可以处理公式,并且有来自base R 的all.vars(),但我不确定我需要在f() 的内部select() 函数中为此添加什么评估我想要的方式。在我得到我想要的之前只做基本的字符串操作是最好的答案吗?如果有某种方法可以让整洁的评估工作在幕后处理这个问题,我会更喜欢,例如,f(df, formula(x ~ .)) 会像往常一样导致f %>% select(x, everything()) dplyr。
所以基本上我要问的是,有没有办法让我从公式中提取变量并让select() 正常评估它们?
【问题讨论】:
-
为什么一定是公式?如果是公式,为什么要使用 2 面公式???。试试
f <- function(.data, a_formula) { .data %>% select(all.vars( a_formula)) }