为同一个ggplot使用不同的数据框

时间:2015-09-01 14:04:02

标签: r ggplot2

我找到了%+%ggplot2运算符的示例,以便为同一个图使用不同的数据框。示例可用here

当我尝试这个时,我收到一条错误消息:

df <- data.frame(x=rnorm(1000), y=rnorm(1000))
p <- ggplot(df, aes(x,y)) + geom_point()
p
p %+% df[1:100,]
  

p%+%df [1:100,]中的错误:x必须是向量或矩阵

我是否误解了网站上的例子?

sessionInfo()

sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.9.5 (Mavericks)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] cfpscripts_0.4.0  seqinr_3.1-3      ade4_1.7-2        gridExtra_0.9.1   psych_1.5.4       reshape2_1.4.1    plyr_1.8.3        knitr_1.10.5      rMQanalysis_0.2.0 ggplot2_1.0.1     testthat_0.10.0  
[12] devtools_1.8.0   

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.0           git2r_0.10.1          tools_3.2.0           digest_0.6.8          memoise_0.2.1         gtable_0.1.2          lattice_0.20-31       curl_0.8              parallel_3.2.0       
[10] proto_0.3-10          stringr_1.0.0         imbproteomicsr_0.1.7  xml2_0.1.1            rversions_1.0.1       data.table_1.9.4      sp_1.1-1              magrittr_1.5          scales_0.2.5         
[19] cfppdfs_0.3.4         MASS_7.3-40           mnormt_1.5-3          splitstackshape_1.4.2 logspline_2.1.8       colorspace_1.2-6      labeling_0.3          stringi_0.5-5         munsell_0.4.2        
[28] chron_2.3-45          crayon_1.3.0          zoo_1.7-12 

1 个答案:

答案 0 :(得分:3)

基本问题是在 psych之后加载ggplot2,它会给您一条消息:

  

附加包装:'心理'   以下对象从'package:ggplot2'中隐藏:   %+%,alpha

由于R的解析器允许一组有限的字符来分隔运算符,因此:: +反向标记技巧p ggplot2::`%+%` newdata将不起作用。除了确保在psych之前加载ggplot2之外,您还可以

`%+%` <- ggplot2::`%+%`

在全局工作区中创建运算符的另一个副本,但最好只关注加载psychggplot2

您可以添加测试

if(find("%+%")[1]=="package:psych") stop("oops")

到你的代码,以确保不会偶然发生......