如何在dplyr中链接ifelse语句 [英] how to chain ifelse statement in dplyr

查看:108
本文介绍了如何在dplyr中链接ifelse语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的R函数之一中链接ifelse语句。基本上我想做的是:

I was trying to chain ifelse statement in one of my R function. Basically what I want to do is:

do.something <- function (df, cond=TRUE){
    df %>% ifelse(cond, do something, do something else)
}

以mtcars数据集为例:

Use mtcars dataset as an example:

    select.vars <- function (df, cond=TRUE){
        df %>% ifelse(cond, select(., mpg,wt), select(., hp, wt))
    }

    select.vars(mtcars )

错误消息:

Error in ifelse(., cond, select(., mpg, wt), select(., hp, wt)) : unused argument (select(., hp, wt))

我只是想知道我做错了什么。有人可以帮忙吗?非常感谢。

I just wonder what I did wrong. Any one can help? Thanks a lot.

推荐答案

因为逻辑矢量的长度为 c ,我们可以使用 if / else 条件

As the logical vector is of length 1, we can use an if/else condition

select.vars <- function (df, cond=TRUE){
    if(cond){
       df %>%
           select(mpg, wt)
    } else {
       df %>%
           select(hp, wt)
 }
}

select.vars(mtcars )






最好使用 if / else 为此,但是如果我们需要 ifelse 并且选择是在中使用 ifelse select


It is better to use if/else for this purpose, but if we need ifelse and option would be to use ifelse within the select

select.vars <- function (df, cond=TRUE){

      df %>%
         select(ifelse(rep(cond, 2), c('mpg', 'wt'), c('hp', 'wt')))     


 }

select.vars(mtcars)

这篇关于如何在dplyr中链接ifelse语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆