I'm hitting a snag when I try to use the %+%
operator to redo an existing plot with new data. My code looks like this:
df <- data.frame(ending=now()+hours(0:5), actual=runif(6), pred=runif(6))
p <- ggplot(df, aes(x=ending)) +
geom_line(aes(y=actual, color='Actual')) +
geom_line(aes(y=pred, color='Predicted')) +
ylab('Faults') +
scale_color_manual('Values', c("Predicted"="red", "Actual"="black"))
p
That works fine. But when I try to substitute a new df
, I hit errors:
p1 %+% df
Error in bl1$get_call : $ operator is invalid for atomic vectors
Any thoughts?
Of course, immediately after I post, I find the answer - it's not ggplot2
's %+%
operator. Another namespace collision. The mboost
package also provides a %+%
operator.
I "solved" this by doing detach(package:mboost)
. I could also solve it by doing something like
replot <- get('%+%', 'package:ggplot2')
replot(p, df)
A solution to avoiding the namespace collision would be best, but I don't know how to do that.
You can reassign infix operators to infix operators, but I don't think you can then turn them back into regular functions without special effort. Try this instead:
`%new+%` <- ggplot2::`%+%`
.... and use it as p %+% df
, rather than as %+%(a,b)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With