This is equivalent to `{if(test) x else y}`

. The main
advantage of using this function is better formatting, and a more
natural syntax when the result is being assigned; see examples below.

With 5 arguments, this is equivalent to ```
{if(test1) x else if(test2) u
else v}
```

(where arguments are given by name, not position).

1 |

`test` |
logical value; if TRUE return x. |

`x` |
any object; this is returned if test is TRUE. |

`y` |
any object; this is returned if test is FALSE. |

`...` |
there should be 3, 5, 7, etc. arguments to this function; arguments 1, 3, 5, etc. should be logical values; the other arguments (even numbered, and last) are objects that may be returned. |

`test`

should be a scalar logical, and only one of `x`

or
`y`

is evaluated, depending on whether `test = TRUE`

or
`test = FALSE`

, and `x`

and `y`

may be any objects.
In contrast, for
`ifelse`

, test is normally a vector, both `x`

and `y`

are evaluated, even if
not used, and `x`

and `y`

are vectors the same length as
`test`

.

with three arguments, one of `x`

or `y`

.
With k arguments, one of arguments 2, 4, ..., k-1, k.

`ifelse`

, `if`

.

1 2 |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.