[R] testing with if: what I am doing wrong?

Duncan Murdoch murdoch.duncan at gmail.com
Sun Dec 19 10:37:25 CET 2010


On 18/12/2010 8:34 AM, Luca Meyer wrote:
> I am running this small program:
>
> x<- factor(c("A","B","A","C"))
> y<- c(1,2,3,4)
> w<-data.frame(x,y)
> if (w$x=="A"){
> 	w$z=1
> }
> w
> And I obtain:
>
>    x y z
> 1 A 1 1
> 2 B 2 1
> 3 A 3 1
> 4 C 4 1
>
> And not
>
>    x y z
> 1 A 1 1
> 2 B 2 NA
> 3 A 3 1
> 4 C 4 NA
>
> Like I should obtain. What am I doing wrong?

You're using "if", which only looks at the first element (as the message 
said).  See ?ifelse for a conditional that applies to each vector entry.

Duncan Murdoch

>
> Please notice that I get a warning approximately saying - translated from italian:
>
> In if (w$x == "A") { : the condition length>  1 and only the first element will be used
>
> Thanks,
> Luca
> ______________________________________________
> 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.



More information about the R-help mailing list