我想知道是否有可能做下面的技巧,避免也許使用smoehow apply
for
循環,但我不知道如何在這種情況下,我與那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]
}
}
我想知道是否有可能做下面的技巧,避免也許使用smoehow apply
for
循環,但我不知道如何在這種情況下,我與那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]
}
}
如果你想要一個簡單的滯後函數,那麼這個函數適用於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))))
}
你想在這裏做什麼?滯後一個變量?這是如何避免'for'循環? – Jason
是的,它應該是一個滯後,但也是'0.5 *(x [i,j] + x [max(i-4,1),j])''。我試圖使用'應用',但我不知道如何使用它時,基於矩陣索引 – Stefano