rainer
rainer

Reputation: 939

Custom Function, ggplot and return values

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))
}

Upvotes: 12

Views: 10983

Answers (1)

Tyler Rinker
Tyler Rinker

Reputation: 109864

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()

Upvotes: 20

Related Questions