如何避免dplyr::select函数传入空参数时出现报错?
问题解决:避免
select传入空字符串时报错 问题场景
当empty变量为空字符串时,执行以下代码会触发报错:
empty <- "" mtcars %>% select(mpg, empty)
报错信息
Error in `select()`: ! Can't subset columns that don't exist. ✖ Column `` doesn't exist.
empty是循环输出的结果,需求是当它为空时,仅选择mpg列(等价于mtcars %>% select(mpg,)的效果),同时避免报错。
解决方案
方法1:过滤空列名后传入
将目标列名存入向量,过滤掉空字符串后,用all_of()传递给select:
cols_to_select <- c("mpg", empty) # 过滤空字符串 cols_to_select <- cols_to_select[cols_to_select != ""] mtcars %>% select(all_of(cols_to_select))
方法2:条件判断控制列传入
通过if条件判断,仅当empty非空时才传递该列参数:
mtcars %>% select(mpg, if(empty != "") all_of(empty))
方法3:将空字符串转为NULL
select会自动忽略NULL参数,因此可以先把空字符串转换为NULL:
# 转换空字符串为NULL empty <- if(empty == "") NULL else empty mtcars %>% select(mpg, empty)
内容的提问来源于stack exchange,提问作者JohnBones JohnBones
相关产品推荐
相关产品推荐

