[R] A suggestion to improve ifelse behaviour with vector yes/no arguments
Duncan Murdoch
murdoch at stats.uwo.ca
Tue May 31 17:16:48 CEST 2005
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
More information about the R-help
mailing list