我更新到最新版本,ggplot2
并通过在图层中打印子集遇到问题.
library(ggplot2) library(plyr) df <- data.frame(x=runif(100), y=runif(100)) ggplot(df, aes(x,y)) + geom_point(subset=.(x >= .5))
这些代码行在版本中工作1.0.1
但不在2.0.0
.它抛出一个错误Error: Unknown parameters: subset
.
我找不到正式的更改日志或如何分配特定图层的方法.特别是因为这个plyr
解决方案不是很好记录,我想我发现它在堆栈溢出的某个地方.
根据ggplot2 2.0.0代码中的注释:
#' @param subset DEPRECATED. An older way of subsetting the dataset used in a #' layer.
可以在这里找到:https://github.com/hadley/ggplot2/blob/34d0bd5d26a8929382d09606b4eda7a36ee20e5e/R/layer.r
现在这样做的一种方法是:
library(ggplot2) library(plyr) df <- data.frame(x=runif(100), y=runif(100)) ggplot(df, aes(x,y)) + geom_point(data=df[df$x>=.5,])
或者这,(但要注意"非标准评估"(NSE):)
library(ggplot2) library(plyr) df <- data.frame(x=runif(100), y=runif(100)) ggplot(df, aes(x,y)) + geom_point(data=subset(df,x>=.5))
我认为这是最安全的,因为它没有NSE或美元符号字段选择器:
library(ggplot2) library(plyr) df <- data.frame(x=runif(100), y=runif(100)) ggplot(df, aes(x,y)) + geom_point(data=df[df[["x"]]>=.5,])
但是还有很多其他人使用管道等......