2017-02-23 23 views
-2

長さの異なる2つのベクトルに問題があります。私は時間が同じである2つのベクトルの値の間の減算を実現したいと思います。例えば異なるベクトル間の同じ時間での操作R

theo <- data.frame(
    time = seq(236.4, 850, by = 0.01), 
    val = seq(0, 6136, 0.1) 
) 
obs <- data.frame(
    time = c(260.76, 270.53, 288.44, 308.15, 
      310.12, 319.38, 335.25), 
    val = c(1, 8, 10, 5, 0.2, 6, 5) 
) 

私は

with(theo[theo$time==obs$time,],sum((obs$val -theo$val)^2)) 

を試してみましたしかし、それは動作しませんでした。

+0

@jogoもう一度質問を読んでください。マージは私がここで考える最後のオプションです、それは深刻な過度のことです。 –

+0

@JorisMeysもう一度質問を読んだが、 'merge()'で解を除外した情報は見つけられなかった。 – jogo

+0

@jogoおそらく、要求されたオブジェクトがデータフレームではなく単一の値である部分ですか? –

答えて

1

インデックスを使用します。とwithの呼び出しは絶対に不要です。同じデータフレームの異なる変数を使用して操作を行う場合にのみ使用します。あなたのコードでは、2つの異なるデータフレームで作業します。

このコードは、あなたに必要なものを提供します。浮動小数点エラーを考慮する必要がありましたが、実際に私は驚きました。だから私は使用しなければならなかったround()

id <- match(round(obs$time,2), round(theo$time,2) 
sum(obs$val - theo$val[id])^2 
関連する問題