On 7/10/19 5:54 PM, Richard O'Keefe wrote:
Expectation: ifelse will use the same "repeat vectors to match the longest"
rule that other vectorised functions do. So
a <- 1:5
b <- c(2,3)
ifelse(a < 3, 1, b)
=> ifelse(T T F F F <<5>>, 1 <<1>>, 2 3 <<2>>)
=> ifelse(T T F F F <<5>>, 1 1 1 1 1 <<5>>, 2 3 2 3 2 <<5>>)
=> 1 1 2 3 2
and that is indeed the answer you get. Entirely predictable and consistent
with
other basic operations in R.
The only tricky thing I see is that R has
a strict vectorised ifelse(logical.vector, some.vector, another.vector)
AND
a non-strict non-vectorised if (logical.scalar) some.value else
another.value
AND
a statement form if (logical.scalar) stmt.1; else stmt.2;
Just for the records, there is a further form:
`if`(logical.scalar, stmt.1, stmt.2)
The main problem with ifelse is that 1) it is very slow, and 2) the mode
of its return value can be unintuitive or not too predictable (see also
the Value and Warning sections of ?ifelse). One has to be very careful
and ensure that 'yes' and 'no' vectors have the same class, because
ifelse will not warn you at all:
> ifelse(c(TRUE, TRUE), 1:2, LETTERS[1:2])
[1] 1 2
> ifelse(c(TRUE, FALSE), 1:2, LETTERS[1:2])
[1] "1" "B"
For options instead of base::ifelse, you might find this discussion helpful:
https://github.com/Rdatatable/data.table/issues/3657
Cheers,
Denes
On Thu, 11 Jul 2019 at 01:47, Eric Berger <ericjber...@gmail.com> wrote:
For example, can you predict what the following code will do?
a <- 1:5
b <- c(2,3)
ifelse( a < 3, 1, b)
On Wed, Jul 10, 2019 at 4:34 PM José María Mateos <ch...@rinzewind.org>
wrote:
On Wed, Jul 10, 2019, at 04:39, Eric Berger wrote:
1. The ifelse() command is a bit tricky in R. Avoiding it is often a
good
policy.
You piqued my curiosity, can you elaborate a bit more on this?
--
José María (Chema) Mateos || https://rinzewind.org
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.