with(data.frame,ifelse(___,___,___))
-----Original Message-----
From: r-help-bounces at r-project.org
[mailto:r-help-bounces at r-project.org] On Behalf Of Jim Moon
Sent: Wednesday, December 22, 2010 5:05 PM
To: R-help at r-project.org
Subject: [R] with(data.frame,ifelse(___,___,___))
Hello, All,
Mac OS 10.6.5
R64 2.11.1
This works as expected:
f1 = c(0.084, 0.099, 0)
data= data.frame(f1)
data$f1=with(data,ifelse(f1==0, 0.0001, f1))
data
f1
1 0.0840
2 0.0990
3 0.0001
Substituting 'f1==0' with 'T' produces the expected result:
f1 = c(0.084, 0.099, 0)
data= data.frame(f1)
data$f1=with(data,ifelse(T, 0.0001, f1))
It produces those results accidently. Look at the output of the ifelse call, before you stuff it into data$f1: > ifelse(TRUE, 0.0001, data$f1) [1] 1e-04 The output of ifelse(condition,ifTrue,ifFalse) is the length of the condition argument and has nothing to do with the length of the ifTrue or ifFalse arguments. `$<-.data.frame`(x,name,value) will expand the value argument to the nrow(x). Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
data
f1
1 1e-04
2 1e-04
3 1e-04
But, substituting 'f1==0' or 'T' with 'F' does not produce
the expected result:
f1 = c(0.084, 0.099, 0)
data= data.frame(f1)
data$f1=with(data,ifelse(F, 0.0001, f1))
data
f1
1 0.084
2 0.084
3 0.084
I would expect this:
f1
1 0.084
2 0.099
3 0
Is with(data.frame,ifelse(___,___,___)) broken, or does my
interpretation of it need fixing?
Thank you for your time.
Jim
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list 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.