I am very new to R and just learnt to write simple functions. Can someone help me understand why the following function does not work.
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
Now, if I call the fboxplot function
fboxplot(df, col1, col2)
I get the error Error in eval(expr, envir, enclos): object varx not found. I also tried
fboxplot(df, varx = col1, vary = col2)
That gives the same error. Where am I going wrong?
Thanks for your help.
The
aesfunction in ggplot2 uses names likelibrary()does, i.e. it takes the name of the argument as the argument. If this is an object, it does not evaluate it but takes the name instead. Here it takesvarxas the argument and not whatvarxevaluates too.It works if you use
aes_string()instead and use characters as arguments in thefboxplot()call: