2016-04-14 118 views
0

我想知道是否有可能做下面的技巧,避免也許使用smoehow applyfor循環,但我不知道如何在這種情況下,我與那max(i-4,1)的R - 避免了基於矩陣指數環

x <- matrix(seq_len(100),10,10) 
x[,1] <- letters[1:10] 
y <- x 
for (i in 1:nrow(x)) { 
    for (j in 2:ncol(x)) { 
    y[i,j] <- x[max(i-4,1),j] 
    } 
} 
+0

你想在這裏做什麼?滯後一個變量?這是如何避免'for'循環? – Jason

+0

是的,它應該是一個滯後,但也是'0.5 *(x [i,j] + x [max(i-4,1),j])''。我試圖使用'應用',但我不知道如何使用它時,基於矩陣索引 – Stefano

回答

0

如果你想要一個簡單的滯後函數,那麼這個函數適用於data.tables和數據框架。我確定你可以編輯使用矩陣。

#data table version 
lagging<- 
function (data, var, time) 
{ 
    return(c(rep(NA, time), head(data[, eval(as.name(var))], 
     (length(data[, eval(as.name(var))]) - time)))) 
} 

#data frame version 
lagging<- 
function (data, var, time) 
{ 
    return(c(rep(NA, time), head(data[, var], 
     (length(data[, var]) - time)))) 
} 
+0

好吧,我試圖看看如何適應我的情況。但是,您可以確認沒有辦法使用基礎功能。這是我的擔心 – Stefano

+1

我既不能確認也不否認;) – Jason