Dear R users,
I am a R beginner and I am having trouble in using "If Else" in R.
Here is
an example:
## create a data frame
a<-c(1,2,3,4)
b<-c(2,0,5,0)
ab<-data.frame(cbind(a,b))
##calculate c, which is the ratio between a and b
if(ab$b>0) {
ab$c<-ab$a/ab$b
} else {
ab$c<-0
}
here is the error I got:
Warning message:
In if (ab$b > 0) { :
the condition has length > 1 and only the first element will be used.
Any help is appreciated!
Gary
[[alternative HTML version deleted]]
Hi, This would be an issue with if() as well as if/else. ab$b has 4 numbers in it, so ab$b > 0 evaluates to "TRUE TRUE FALSE TRUE" or whatever. if() can only take a single true or false. Cheers! Nick On Tue, Nov 19, 2013 at 8:30 PM, Gary Dong <pdxgary163 at gmail.com> wrote:> Dear R users, > > I am a R beginner and I am having trouble in using "If Else" in R. Here is > an example: > > ## create a data frame > > a<-c(1,2,3,4) > b<-c(2,0,5,0) > ab<-data.frame(cbind(a,b)) > > ##calculate c, which is the ratio between a and b > > if(ab$b>0) { > ab$c<-ab$a/ab$b > } else { > ab$c<-0 > } > > here is the error I got: > > Warning message: > In if (ab$b > 0) { : > the condition has length > 1 and only the first element will be used. > > Any help is appreciated! > > Gary > > [[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.
Hi,
Try:
within(ab, {c <- ifelse(b>0, a/b,0)})
A.K.
On Tuesday, November 19, 2013 8:51 PM, Gary Dong <pdxgary163 at gmail.com>
wrote:
Dear R users,
I am a R beginner and I am having trouble in using "If Else" in R.
Here is
an example:
## create a data frame
a<-c(1,2,3,4)
b<-c(2,0,5,0)
ab<-data.frame(cbind(a,b))
##calculate c, which is the ratio between a and b
if(ab$b>0) {
ab$c<-ab$a/ab$b
} else {
ab$c<-0
}
here is the error I got:
Warning message:
In if (ab$b > 0) { :
? the condition has length > 1 and only the first element will be used.
Any help is appreciated!
Gary
??? [[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.
On Nov 19, 2013, at 5:30 PM, Gary Dong wrote:> Dear R users, > > I am a R beginner and I am having trouble in using "If Else" in R. Here is > an example: > > ## create a data frame > > a<-c(1,2,3,4) > b<-c(2,0,5,0) > ab<-data.frame(cbind(a,b)) > > ##calculate c, which is the ratio between a and b > > if(ab$b>0) { > ab$c<-ab$a/ab$b > } else { > ab$c<-0 > } > > here is the error I got:Consider this alternative: ab$c <- (ab >0 ) * ab$a/ab$b Although in general, you will probably use `ifelse`. ?ifelse # different than ?"if" -- David Winsemius Alameda, CA, USA