如果没有匹配项,如何阻止select()检索空数据帧?

时间:2016-05-19 17:44:04

标签: r dplyr

我希望以下代码:在tbl_df 中转换cars,然后排除以"变量&#34 ;;开头的所有列。因此基本上返回cars

tbl_df(cars) %>% 
select(-starts_with("variable"))

有什么方法可以调整此功能来检索汽车而不是空数据集? 我之所以做这个看似毫无意义的操作,是因为该函数嵌套在一个循环中,其中以variable开头的列可能存在,也可能不存在。

2 个答案:

答案 0 :(得分:2)

尝试setdiff

# this returns all columns
tbl_df(cars) %>% select(setdiff(everything(), starts_with("variable")))

# this returns all columns except the "dist" column
tbl_df(cars) %>% select(setdiff(everything(), starts_with("dist")))

答案 1 :(得分:2)

可能在表达式中提到所有可能的列:

tbl_df(cars) %>% select(1:ncol(.), -starts_with("variable"))