我试图从一系列文件中绘制每月每天的长期(几年)平均降水量(pp)的直方图。每个文件都包含从不同位置收集的数据(并且具有不同的代码)。我的每个文件都是这样的:
X code year month day pp
1 2867 1945 1 1 0.0
2 2867 1945 1 2 0.0
...
我正在使用以下代码:
files <- list.files(pattern=".csv")
par(mfrow=c(4,6))
for (i in 1:24) {
obs <- read.table(files[i],sep=",", header=TRUE)
media.dia <- ddply(obs, .(day), summarise, daily.mean<-mean(pp))
codigo <- unique(obs$code)
hist(daily.mean, main=c("hist per day of month", codigo))
}
我在标题中得到24个直方图,其中包含24个不同的代码,但不是24个不同位置的24个不同直方图,我得到相同的直方图24次(有24个不同的标题)。谁能告诉我为什么?谢谢!
答案 0 :(得分:5)
我可以在您的代码中看到至少两个错误。
ddply
声明中有错误。 ddply
语句中的问题是您正在执行无效分配(使用<-
)。使用=
:
media.dia<- ddply(obs, .(day),summarise, daily.mean = mean(pp))
然后编辑您的hist
声明:
hist(media.dia$daily.mean,main=c("hist per day of month",codigo))
我怀疑问题是你没有将正确的参数传递给hist
。你的代码实际上产生一个情节的原因是因为在你的会话的某个前一步中你必须创建一个名为daily.mean
的变量(正如Brandon在评论中指出的那样)。
答案 1 :(得分:0)
我认为daily.mean
函数中计算的ddply
是在单独的环境中分配的,并且在hist
可以看到的环境中不存在。
尝试daily.mean<<-mean(pp)