我们如何编写一个允许用户使用...
参数dplyr
样式删除多个列的函数?
E.g。
mydrop=function(x,...){function body}
mydrop(npk,N:K)
返回npk[,c("block","yield")]
。
请注意,...
参数与所有?select_helpers
函数兼容非常重要。
答案 0 :(得分:2)
与@akrun类似,但允许为{...}请求的N:K
,dplyr样式列选择,以及一些错误处理:
mydrop <- function(x,...){
try(
todrop <- x %>%
select(...) %>% names(.)
, silent = TRUE)
if(exists('todrop')){
x %>% select(setdiff(current_vars(), todrop))
}else x
}
答案 1 :(得分:1)
也许我们可以使用
mydrop <- function(x,...){
nm <- list(...)
if(length(nm)>0) {
x %>%
select(-one_of(unlist(nm)))
} else x
}
mydrop(npk, "N", "K")
使用可重复的示例
mydrop(mtcars, 'mpg', 'cyl')
mydrop(mtcars)
mydrop(mtcars, names(mtcars)[-1])
mydrop(mtcars, names(mtcars))