图层中的子参数不再使用ggplot2> = 2.0.0

时间:2016-01-04 09:40:30

标签: r ggplot2 plyr

我更新到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解决方案记录不是很好,我想我发现它在堆栈溢出的某个地方。

1 个答案:

答案 0 :(得分:11)

根据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,])

但是还有很多其他人使用烟斗等......