# Re: [R] if then statement problem

From: Gustavo Carvalho <gustavo.bio_at_gmail.com>
Date: Thu, 27 Nov 2008 16:54:43 -0300

If I understood your problem correctly, you are just missing a couple of things:

q = which(apply(p.unique,2,function(x)all(x==r)) == TRUE)

Also, you should probably change this line:

if(q>0){c=p.unique[,q]};{c=c(0,0,0)}

To something like this:

if(length(q)>0){c=p.unique[,q]};{c=c(0,0,0)}

Regards,

Gustavo

On Thu, Nov 27, 2008 at 3:02 PM, Salas, Andria Kay <aks2515_at_uncw.edu> wrote:
> I really need help with an if then statement I am having trouble with. A brief explanation of what I am trying to do: I have a p matrix of all permutations of a vector of length 3 filled with either 1s or -1s (these make up the columns). The p.unique matrix is the unique columns of the p matrix; here, they are identical but in my real script this will not always be the case. I want to be able to take a randomly generated vector and see which column in the p.unique matrix, if any, match the random vector. If there is a match, I get an integer returned that tells me which column is the match. If there is no match, I get the response integer (0). I want to write an if then statement that allows me to do different things based upon if there is a match to one of the columns in the p.unique matrix or not. Below is a sample script plucked from bits of my "master script" that show this problem. The vector "r" was made to not match any columns in p.unique. If it did, "c" w!
ou!
> ld equal the integer representing the matching column, and since it does not, I want c to equal the vector (0,0,0). My if then statement is not working (I keep getting the error that my argument is of length zero), so I would really appreciate any help anyone can provide me. Thanks for all of your help previously and in advance for the help with this problem!! Happy Thanksgiving!
>
> p=as.matrix(do.call(expand.grid,rep(list(c(-1,1)),3)))
> p=t(p)
> p.unique=unique(p,MARGIN=2)
>
> r=c(2,2,2)
> q=which(apply(p.unique,2,function(x)all(x==r)))
> if(q>0){c=p.unique[,q]};{c=c(0,0,0)}
>
> ______________________________________________
> R-help_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help