Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom Function, ggplot and return values

Tags:

r

ggplot2

Today I noticed something strange. I wrote a function which should return a dataframe and a plot, a plot produced with ggplot2.

But if I run the function, either the plot will not appear or the dataframe.

Do you know this problem and can give me a solution to it?

Thank you very much!

Rainer

Here is a dummy function to make myself clear:

dummyfunct<-function(){
df <- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
               total_bill = c(14.89, 17.23))

ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time))
return(df)
} 

or

dummyfunct<-function(){
df <<- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
               total_bill = c(14.89, 17.23))

ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time))
}
like image 868
rainer Avatar asked Aug 03 '12 16:08

rainer


1 Answers

I'll answer but I know this is a repeated question and it may likely get closed:

With ggplot you need to explicitally use print inside a function as in:

dummyfunct <- function(){
    df <- data.frame(time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
           total_bill = c(14.89, 17.23))
    x <- ggplot(data=df, aes(x=time, y=total_bill)) + geom_bar(aes(fill=time))
    print(x)
    return(df)
} 

dummyfunct()
like image 146
Tyler Rinker Avatar answered Sep 21 '22 20:09

Tyler Rinker