当我尝试使用%+%运算符重新编写包含新数据的现有绘图时,我遇到了麻烦.我的代码看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
这很好.但是当我尝试替换新的时df,我遇到了错误:
p1 %+% df
Error in bl1$get_call : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
当然,我发帖后立即就找到了答案——不是ggplot2's%+%操作员。另一个命名空间冲突。该mboost软件包还提供了一个%+%运算符。
我通过这样做“解决”了这个问题detach(package:mboost)。我也可以通过做类似的事情来解决它
replot <- get('%+%', 'package:ggplot2')
replot(p, df)
Run Code Online (Sandbox Code Playgroud)
避免命名空间冲突的解决方案是最好的,但我不知道该怎么做。