图层中的子集参数不再适用于 ggplot2 >= 2.0.0
subset parameter in layers is no longer working with ggplot2 >= 2.0.0
我更新到最新版本 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,])
或者这个,(但要注意 "Non Standard Evaluation" (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 或 dollar-sign 字段选择器:
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,])
但是还有很多其他人使用管道等...
我更新到最新版本 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,])
或者这个,(但要注意 "Non Standard Evaluation" (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 或 dollar-sign 字段选择器:
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,])
但是还有很多其他人使用管道等...