0
votes

I'm trying to produce a plot in R with data points colored if they meet condition X AND condition Y OR condition Z AND condition Y.

I can produce a graph for half of this argument -- ie: color if condition X and Y are met.

plot(mydata$Mean, mydata$log2FoldChange, cex=0.3, pch=20, 
col=ifelse(mydata$foldChange>2 & mydata$pval<0.05, "red", "black"), log="x", 
xlab="mydata$mean", ylab="mydata$log2foldchange")

which looks like:this

Ideally, I'd like the bottom half of the graph to be colored for similiar conditions: pval<0.05 and foldChange<0.2.

I've tried:

plot(mydata$Mean, mydata$log2FoldChange, cex=0.3,pch=20, col=ifelse(mydata$foldChange>2 & mydata$padj<0.05, "red", "black"), col=ifelse(mydata$foldChange<0.2 & mydata$padj<0.05, "blue", "black") log="x", xlab="mydata$mean", ylab="mydata$log2foldchange")

But it throws an error:

Error: unexpected symbol in "plot(mydata$Mean, mydata$log2FoldChange, cex=0.3,pch=20, col=ifelse(mydata$foldChange>2 & mydatar$padj<0.05, "red", "black"), col=ifelse(mydata$foldChange<0.2

I'm just not sure how to include an "or" statement in R. Thanks for any help, I'm still very new to R!

1
Something like c("red","black")[with(mydata, (condition1) | (condition2) ) + 1] maybe? - thelatemail

1 Answers

0
votes

What about :

col=ifelse(mydata$padj<0.05, ifelse(mydata$foldChange>2,"red", ifelse(mydata$foldChange<0.2 , "blue", "black"), "black"), "black")