Re: [R] A suggestion to improve ifelse behaviour with vector yes/no arguments

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Wed 01 Jun 2005 - 01:16:48 EST

Mäkinen Jussi wrote:
> Dear All,
>
> I luckily found the following feature (or problem) when tried to apply ifelse-function to an ordered data.
>
>

>>test <- c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)
>>ifelse(test, 0, 1:4)

>
> [1] 0 0 0 4 1 2 3
>
>
> It roots into the ifelse-syntax:
>
> ans[!test & !nas] <- rep(no, length.out = length(ans))[!test & !nas]
>
> Would it be possible to disable this feature in the next R-version? For instance change the code to be:
>
> ans[!test & !nas] <- rep(no, length.out = length(ans[!test & !nas]))
>
> which seems to solve the problem.

As Dimitris said, this is just recycling. I think getting rid of recycling on vectors with length greater than 1 would have been a good decision in S about 15 years ago, but it's too late now.

Duncan Murdoch



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jun 01 01:34:26 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:17 EST