Skip to content

Error in if-command

4 messages · Dominic Roye, arun, R. Michael Weylandt

#
HI,

Try ifelse

?fun1<-function(y){
?ifelse(y==c(4,5,9,11,17),"yes","no")
?}
#[1] "no"? "no"? "yes" "no"? "no" 

A.K.

----- Original Message -----
From: Dominic Roye <dominic.roye at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Sunday, August 12, 2012 6:12 AM
Subject: [R] Error in if-command

Hello everybody,

I don't understand what I'm doing wrong. But it isn't possible that each
element of the if-condition is tested for each vector element?

y <- c(1:20)
[1]? 1? 2? 3? 4? 5? 6? 7? 8? 9 10 11 12 13 14 15 16 17 18 19 20
[1] "no"
warning:
In if (y == c(4, 5, 9, 11, 17)) { :
? Condition has length > 1 and only the first element is used
#It also doesn't work with this condition ==2

if (y == 2) { print("yes")? } else { print("no")}
[1] "no"
warning:
In if (y == 2) { :
Condition has length> 1 and only the first element is used



I guess it's a trivial problem. I hope someone can help me.

Thank you!

??? [[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,

Your second function works:
fun2<-function(y){
?if(y==2){
?print("yes")}
?else {print("no")}}
?fun2(3)
#[1] "no"
?fun2(4)
#[1] "no"
?fun2(2)
#[1] "yes"


But, in the first case, it is a vector.
So, you can use:
fun3<-function(y){
?numbers1<-c(4,5,9,11,17)
?if(y %in% numbers1){
?print("yes")}
?else {print("no")}
?}
?fun3(8)
#[1] "no"
?fun3(9)
#[1] "yes"
?fun3(10)
#[1] "no"
?fun3(11)
#[1] "yes"
A.K.





----- Original Message -----
From: Dominic Roye <dominic.roye at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Sunday, August 12, 2012 6:12 AM
Subject: [R] Error in if-command

Hello everybody,

I don't understand what I'm doing wrong. But it isn't possible that each
element of the if-condition is tested for each vector element?

y <- c(1:20)
[1]? 1? 2? 3? 4? 5? 6? 7? 8? 9 10 11 12 13 14 15 16 17 18 19 20
[1] "no"
warning:
In if (y == c(4, 5, 9, 11, 17)) { :
? Condition has length > 1 and only the first element is used
#It also doesn't work with this condition ==2

if (y == 2) { print("yes")? } else { print("no")}
[1] "no"
warning:
In if (y == 2) { :
Condition has length> 1 and only the first element is used



I guess it's a trivial problem. I hope someone can help me.

Thank you!

??? [[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.
#
Take a look at ?ifelse

Cheers,
Michael
On Aug 12, 2012, at 3:12 AM, Dominic Roye <dominic.roye at gmail.com> wrote: