2つの整数を比較してRでデータフレームをサブセット化するとき、ユーザ定義関数の真中にある。Rの2つの整数を比較する:「より長いオブジェクト長が短いオブジェクト長の倍数ではない」ddply
ユーザー定義関数だけでデータフレームから取られた整数のサブセットの中央値を返します。
function(s){
return(median((subset(EDB,as.integer(validSession) == as.integer(s)))$absStudentDeviation))
}
(私はもともと私は、デバッグにそこにテキストを入れ、そこにas.integer
型変換を持っていませんでした、。 。そして、私はまだエラーを取得しています)
私は取得しています特定のエラーがある:as.integerで
(validSession)== as.integer(S): リットルongerオブジェクトの長さが短く、オブジェクトの長さの倍数でない
私は50回以上、この警告が呼び出すときに取得:
mediandf <- ddply(mediandf,.(validSession),
transform,
grossMed2 = medianfuncEDB(as.integer(validSession)))
目標は、与えられたvalidSession内に関連付けられた$ validSessionの中央値を計算することです大規模なデータフレームEDBを作成し、そのベクトルをmediandfに添付します。
実際には、mediandfデータフレームとEDBデータフレームの両方でvalidSessionの値がすべてis.integer(validSession)
のサブセットで整数であることを再確認しました。
さらに、このコマンドは実際に私が意図した通りに動作しているように見えますが、データフレームに新しい値が表示されますが、警告を理解したいと思います。 "medianfuncEDB"が入力として整数を指定して呼び出されている場合、s == validSession
が呼び出されたときに、「長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません」が表示されるのはなぜですか?
medianfuncEDB(5)
のような単純な関数呼び出しは問題なく動作することに注意してください。なぜddplyを使用すると警告が表示されるのですか?
EDIT:Joranのコメントの助けを借りて問題を発見しました。私はその変換がvecotrs全体に関数に与えられていることは知らなかった。代わりにvalidSession [1]を使用すると警告が表示されませんでした。
サンプルデータを提供できますか? – Chase
私は、答えるよりもむしろコメントしています。これは、再現可能な例がなければ対処するのが難しいためです。しかし、それは強制的に( 'as.integer')に関係することはまずありません。validSessionは常にsと正確に同じ長さになりますか?たぶん、あなたは '=='ではなく '%in%'を使うつもりでしょうか? – joran
デバッグツール(http://stackoverflow.com/questions/1882734/what-is-your-favorite-r-debugging-trick/5156351#5156351)を使用している場合は、自分の考えているものを比較することができますそれが実際に何をしているかのように見えます。具体的には、オプションを設定してみてください(error = recover)。 –