Skip to content

A suggestion to improve ifelse behaviour with vector yes/no arguments

5 messages · Mäkinen Jussi, Dimitris Rizopoulos, Duncan Murdoch +1 more

#
Dear All,

I luckily found the following feature (or problem) when tried to apply ifelse-function to an ordered data.
[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.

Best regards,

Jussi M??kinen

Jussi M??kinen
Analyst
State Treasury, Finland
www.statetreasury.fi
mailto:jussi.makinen at valtiokonttori.fi
#
there is nothing problematic there! According to the help-page of 
ifelse(), in the Details section you get:

"If yes or no are too short, their elements are recycled."
                                                ^^^^^^^^
and this is what you get in your example.


Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
     http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm




----- Original Message ----- 
From: "M??kinen Jussi" <Jussi.Makinen at valtiokonttori.fi>
To: <r-help at stat.math.ethz.ch>
Sent: Tuesday, May 31, 2005 4:15 PM
Subject: [R] A suggestion to improve ifelse behaviour with vector 
yes/noarguments
#
M??kinen Jussi wrote:
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
#
On Tue, 31 May 2005, Duncan Murdoch wrote:

            
<snippage>
It wouldn't help the original poster, though.  I agree that 0,0,0,4,1,2,3 
is a slightly weird result, but I can't think of any reasonable model for 
the behaviour of ifelse() that would give any other result except an error 
message. [or  0,NA,NA,4,NA,NA,NA, I suppose].

 	-thomas
#
Thomas Lumley wrote:
I would vote for the error message.  I can't think of a single example 
where a vector of length 7 is needed, and a vector of length 4 is 
recycled to give it, that *doesn't* give a slightly weird result.

Maybe this is something that should have been changed in R 2.0.0; we 
squandered that change from 1.x.x to 2.x.x.

Duncan Murdoch