2017-02-23 58 views
-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

使用指數。與()調用是絕對沒有必要的。只有當你想用同一個數據框的不同變量進行操作時才使用它。在你的代碼中,你使用2個不同的數據框。

此代碼確實給你你想要的。我不得不考慮浮點錯誤,這實際上令我驚訝。這就是爲什麼我必須使用round()

id <- match(round(obs$time,2), round(theo$time,2) 
sum(obs$val - theo$val[id])^2 
相關問題