我不知道是否有现有的方法来做这件事
让我举一个例子来说明一下:
library(tidyverse)
temp = data.frame(a=1:2,b = 3:4,c = 5:6)
我可以使用tidyverse
中的Mutations 方法和表达式列表来添加新列
mutation_list = list(d = quote(a+b),e = quote(a+b+c))
result = temp %>% mutate(!!!mutation_list)
然而,在某些情况下,有些列并不存在,在最简单的情况下,我们错过了列名c
.
temp2 = temp[,c('a','b')]
我想让结果基于现有的变量计算所有可能的变量,在这个简单的例子中,d
,因为a
和b
都在那里,而对于e
,它没有c
,所以我们不能计算结果,我们只返回a
,b
,d
的结果;没有抛出错误异常.即:
result = temp2 %>% mutate_onlyif_itcanfindvars(!!!mutation_list)
在这个简单的例子中,我们可以很容易地找到其他方法来编写它,但是,如果我们有像10000+这样的表达式列表,它必须有一些统一的方法来完成这一点.
答案不需要使用dplyr
,您可以使用data.table
或任何您想要的包,但我们需要将temp保存在data.Frame(或data.table或Tibble)中,并将xarition_list作为表达式列表(如果您使用其他形式,请解释它)