web-dev-qa-db-ja.com

長いオブジェクトの長さは短いオブジェクトの長さの倍数ではありませんか?

Rが「長いオブジェクトの長さは短いオブジェクトの長さの倍数ではない」という警告を表示する理由がわかりません

私は、平日の中央値を与えるxtsシリーズで集計を行うことによって生成されるこのオブジェクトを持っています。

u <- aggregate(d, list(Ukedag = format(index(d),"%w")), median)

1 314.0
2 282.5
3 270.0
4 267.0
5 240.5

次に、これを私のオリジナルのxtsシリーズに適用してみます。

head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286

使用:

coredata(d) <- coredat(d) - u[format(index(d),"%w")];

これは警告になります。

目的は、平日の平均を引くことです。警告にもかかわらず動作するようですが、何を心配すればよいですか?

修正されたソリューション:試行2

apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )

私は確かに深刻なエラーを抱えていました。これは警告を出さず、私は次のようにしてテストしました:

apply.daily(d, function(x) u[format(index(x), "%w")] )

次に、いくつかの日付を確認しましたが、カレンダーと一致しているようです。

13
tovare

はい、これはあなたが心配すべきものです。 nrow()でオブジェクトの長さを確認してください。 Rはオブジェクトを自動複製し、オブジェクトが異なる場合に同じ長さになるようにします。つまり、不一致のデータに対して操作を実行している可能性があります。

この場合、生データから集約データを減算するという明らかな欠陥があります。これらは間違いなく異なる長さになります。それらを(日付を使用して)時系列としてマージし、次にlocf()を実行してから、減算を行うことをお勧めします。それ以外の場合は、元の日付を集計された系列と同じ間隔に切り捨てて、それらをマージします。観察結果を落とさないように注意してください。

最後に、始める際の一般的なアドバイスとして、計算の結果を見て、意味があるかどうかを確認します。それらをスプレッドシートに取り込み、結果を複製することもできます。

14
Shane