【问题标题】:R - Avoiding for loops based on matrix indicesR - 避免基于矩阵索引的循环
【发布时间】:2016-04-14 16:47:20
【问题描述】:

我想知道是否可以使用 smoehow apply 来避免 for 循环,但我不知道在这种情况下如何使用 max(i-4,1)

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]
  }
}

【问题讨论】:

  • 你想在这里做什么?滞后变量?这如何避免for 循环?
  • 是的,这应该是一个滞后,但也是0.5*(x[i,j]+x[max(i-4,1),j])。我试图使用apply,但我不知道在基于矩阵索引时如何使用它

标签: r for-loop matrix


【解决方案1】:

如果您想要一个简单的滞后函数,这里是一个适用于 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))))
}

【讨论】:

  • 好的,我试着看看如何适应我的情况。但是,您可以确认无法使用基于函数的方法。这是我的担心
  • 我既不能确认也不能否认;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多