我看过很多其他的查询,标题中也有相同的错误,但是如果它们适用于我的情况,我不太了解R,无法分辨。
我正在使用CO2数据,试图制作一个图表,显示平均吸收量及其四分位数范围。(我已经删除了“平均”图表线,因为这似乎是可行的。)下面是一些代码:
library(ggplot2)
library(plyr)
dat <- data.frame(ColPlant=CO2$Plant, ColUptake=CO2$uptake)
df<-ddply(dat, 'ColPlant', function(x) c(Cases=nrow(x),
AvgUptake=mean(x$ColUptake), TotalUptake=sum(x$ColUptake),
MedianUptake=median(x$ColUptake), QuartileUptake1=quantile(x$ColUptake,0.25),
QuartileUptake2=quantile(x$ColUptake,0.5),
QuartileUptake3=quantile(x$ColUptake,0.75)))
df #Display the summarised data table
combination <- ggplot() +
geom_linerange(aes(x=ColPlant,y=AvgUptake,ymin=QuartileUptake1,ymax=QuartileUptake3),
data=df, colour="yellow", size=5) +
#geom_point(aes(x=ColPlant,y=AvgUptake),data=df,size=3,colour="red") +
theme(axis.text.x=element_text(angle=90))
combination #Display the chart问题是,它到了最后一行,就掉下来了。如问题标题所示,错误是Error in eval(expr, envir, enclos) : object 'QuartileUptake1' not found。然而,当我运行df$QuartileUptake1时,控制台会返回数据。
我漏掉了什么这里?为什么它看不到这个变量,因为它可以看到另一个或多或少以相同的方式创建的变量?
发布于 2015-06-12 04:38:21
默认情况下,quantile返回概率:
set.seed(42)
x <- rnorm(100)
qx <- quantile(x)
qx
# 0% 25% 50% 75% 100%
# -2.99309008 -0.61669350 0.08979677 0.66155812 2.28664539 这些概率是以您所提供的名称来强制的。这就是为什么"QuartileUptake1“变成了”QuartileUp举1.25%“的原因。一个解决办法是返回分位数,而不包含关联的概率,例如:
df<-ddply(dat, 'ColPlant', function(x) c(Cases=nrow(x),
AvgUptake=mean(x$ColUptake),
TotalUptake=sum(x$ColUptake),
MedianUptake=median(x$ColUptake),
QuartileUptake1=as.numeric(quantile(x$ColUptake,0.25)),
QuartileUptake2=as.numeric(quantile(x$ColUptake,0.5)),
QuartileUptake3=as.numeric(quantile(x$ColUptake,0.75))))
combination <-
ggplot() +
geom_linerange(aes(x=ColPlant, y=AvgUptake, ymin=QuartileUptake1, ymax=QuartileUptake3),
data=df, colour="yellow", size=5) +
#geom_point(aes(x=ColPlant,y=AvgUptake),data=df,size=3,colour="red") +
theme(axis.text.x=element_text(angle=90))
combination

https://stackoverflow.com/questions/30795208
复制相似问题