我的问题是如何在dplyr链中使用if..else..statement? 例如:
select.vars <- function(data, price=TRUE ){
diamonds %>% {if (price) select(price) else select(carat)}
}
select.vars(diamonds)
我收到了错误:
Error in UseMethod("select_") :
no applicable method for 'select_' applied to an object of class "logical"
这是一个毫无意义的功能。仅用于说明目的...... 非常感谢。
答案 0 :(得分:1)
我们可以使用if/else
select
select.vars <- function(data, price=TRUE){
diamonds %>%
select(if(price) "price" else "carat")
}
resprice <- select.vars(diamonds)
rescarat <- select.vars(diamonds, FALSE)
head(rescarat)
# A tibble: 6 x 1
# carat
# <dbl>
#1 0.23
#2 0.21
#3 0.23
#4 0.29
#5 0.31
#6 0.24
head(resprice)
# A tibble: 6 x 1
# price
# <int>
#1 326
#2 326
#3 327
#4 334
#5 335
#6 336
答案 1 :(得分:0)
我只是想通了。只需添加.for每个选择。
select.vars <- function(data, price=TRUE ){
diamonds %>% {if (price) select(., price) else select(., carat)}
}