Цикл для создания серии графиков из разных файлов - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь построить гистограммы с долгосрочным (несколько лет) средним количеством осадков (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 ]

5 голосов
/ 25 мая 2011

В вашем коде есть как минимум две ошибки.

  1. В вашем выражении ddply есть ошибка.
  2. Вы передаете неправильную переменную в историю, таким образом, вычерчивая что-то, что может существовать или не существовать в зависимости от предыдущих действий сеанса.

Проблема в вашем выражении 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 (как указывает Брэндон в комментарии.)

0 голосов
/ 25 мая 2011

Я думаю, daily.mean, рассчитанный в функции ddply, назначается в отдельной среде и не существует в среде hist, которую можно увидеть.

Попробуйте daily.mean<<-mean(pp)

...