【发布时间】:2019-01-02 21:16:47
【问题描述】:
我有一个辅助函数(比如foo()),它将在可能包含或不包含指定变量的各种数据帧上运行。假设我有
library(dplyr)
d1 <- data_frame(taxon=1,model=2,z=3)
d2 <- data_frame(taxon=2,pss=4,z=3)
我要选择的变量是
vars <- intersect(names(data),c("taxon","model","z"))
也就是说,我希望foo(d1) 返回taxon、model 和z 列,而foo(d2) 只返回taxon 和z。
如果foo 包含select(data,c(taxon,model,z)),则foo(d2) 失败(因为d2 不包含model)。如果我使用select(data,-pss),那么foo(d1) 同样会失败。
如果我从 tidyverse 撤退,我知道该怎么做(只需返回 data[vars]),但我想知道是否有一种方便的方法(1)使用某种 select() 助手( tidyselect::select_helpers) 或 (2) 与 tidyeval (我仍然还没有找到时间去思考!)
【问题讨论】:
标签: r select dplyr nse tidyselect