[R] Including a ggplot call with a conditional geom in a function

phii m@iii@g oii phiiipsmith@c@ phii m@iii@g oii phiiipsmith@c@
Thu Mar 25 03:24:21 CET 2021


How can I write an R function that contains a call to ggplot within it, 
with one of the ggplot geom statements being conditional? In my reprex, 
I want the plot to contain a horizontal zero line if the y values are 
both positive and negative, and to exclude the horizontal line if all of 
the y values are of the same sign. I tried a simple if statement, but it 
does not work. Suggestions appreciated. Philip

library(rlang)
library(tidyverse)

a <- c(1:8)
b <- c(23,34,45,43,32,45,68,78)
c <- c(0.34,0.56,0.97,0.33,-0.23,-0.36,-0.11,0.17)
df <- data.frame(a,b,c)

posNeg <- function(x) {
   ifelse(sum(x>0)>0 & sum(x>0)<length(x), y <- TRUE,y <- FALSE)
}
plotLineFunc <- function(MYdf,MYx,MYy) {
     ggplot(MYdf,aes(x={{MYx}},y={{MYy}}))+
     #if(posNeg({{MYy}})) geom_hline(yintercept=0,size=0.2)+   # This 
does not work
     geom_line(colour="black",size=0.5)
}
(plot1 <- plotLineFunc(df,a,b))
(plot2 <- plotLineFunc(df,a,c))



More information about the R-help mailing list