当我尝试使用%+%
运算符重新使用新数据重建现有绘图时,我遇到了麻烦。我的代码如下所示:
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
工作正常。但是当我尝试替换新的df
时,我遇到了错误:
p1 %+% df
Error in bl1$get_call : $ operator is invalid for atomic vectors
有什么想法吗?
答案 0 :(得分:4)
当然,在我发布后,我立即找到了答案 - 这不是ggplot2
的{{1}}运营商。另一个命名空间碰%+%
包还提供mboost
运算符。
我通过%+%
解决了这个问题。我也可以通过做像
detach(package:mboost)
避免命名空间冲突的解决方案是最好的,但我不知道该怎么做。
答案 1 :(得分:1)
您可以将中缀运算符重新分配给中缀运算符,但我认为您无需特别努力就可以将它们重新转换为常规函数。试试这个:
`%new+%` <- ggplot2::`%+%`
....并将其用作p %+% df
,而不是%+%(a,b)