循环以从不同文件创建一系列图形

时间:2011-05-25 12:37:24

标签: r loops plot histogram

我试图从一系列文件中绘制每月每天的长期(几年)平均降水量(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个不同的标题)。谁能告诉我为什么?谢谢!

2 个答案:

答案 0 :(得分:5)

我可以在您的代码中看到至少两个错误。

  1. 您的ddply声明中有错误。
  2. 您将错误的变量传递给hist,因此根据之前的会话操作绘制可能存在或不存在的内容。
  3. 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)