2011-05-25 3 views
1

私は、一連のファイルから長期間(数年間)平均降水量(pp)を月ごとにプロットしようとしています。各ファイルには、別の場所から収集されたデータがあります(コードは異なります)。私はタイトルで、代わりに24から24種類のヒストグラムの24種類のコードを持つ24件のヒストグラムを得る異なるファイルから一連のグラフを作成するためのループ

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)) 
} 

X code year month day pp 
1 2867 1945  1 1 0.0 
2 2867 1945  1 2 0.0 
... 

そして、私は、次のコードを使用しています:私の各ファイルには、次のようになります私は同じヒストグラムを24回取得します(24種類のタイトル)。誰も私になぜ教えてもらえますか?ありがとう!

+1

ここでdaily.meanは定義していますか? (はい、それはmedia.diaの列の名前ですが、media.diaを 'hist'に渡すことはありません)。 – Andrie

+0

私は正規分布を責めます。ダミーヒストグラムは常にn --->無限大と同じように見えます。 –

+0

@ brandon-lol私のnはそれほど大きくはない、彼らは間違いなく同じグラフである – sbg

答えて

5

コードには少なくとも2つのエラーがあります。

  1. ddplyステートメントにエラーがあります。
  2. 間違った変数をhistに渡しているため、以前のセッションアクションに応じて存在するかどうかをプロットします。

お客様の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という変数を作成していなければならないからです(daily.mean)。

+0

興味深いことに、彼はdaily.meanをワークスペースの別のオブジェクトとして計算していたので、エラーメッセージが表示されませんでしたか?@BRandon。 –

+0

はい、正確に。私はそれが起こっていることを確信しています。 – Andrie

+0

おかげでそれがエラーを与える:hist.defaultで 'エラー(media.dia $ daily.mean、メイン= cで( "月の一日あたりHIST"、: 'X' はOK、私が発見しました – sbg

0

私はdaily.meanddply関数が別の環境に割り当てられており、環境に存在しませんhistが表示されます。

試行daily.mean<<-mean(pp)

+1

' <<を使用して上流の環境に割り当てる - ! 'すべきです非常にまれなケースでのみ使用されますが、これはその1つではありません。「<」は '= ' – Andrie

+0

@Andrieでなければなりませんあなたのソリューションはより適切です。最初の場所にddplyステートメントがあります。 – James

+0

単純なエラーですが、私の推測です。特に 'data.frame'文をコーディングするときに十分です。 – Andrie