具有先例索引的向量化

时间:2018-06-28 08:10:32

标签: r vectorization

尝试在R中进行向量化时,我经常发现自己在编码此类“ for”循环时被阻塞:

  vector = 1:10
  cumulativeSum = vector[1]
  for (i in seq_along(vector)[-1]) {
    cumulativeSum[i] = cumulativeSum[i-1] + vector[i]
  }

您需要事先不知道的先例索引,这迫使我使用第三个函数或rcpp来避免那些麻烦的“ for”循环。 在这个例子中,我们可以使用cumsum()来避免这种情况。我也经常使用diff()函数。

在这些情况下是否还有其他常用的功能?是否有避免该问题的一般方法。


第一个示例:

c[i] =  ( a[i]*s[i] + ( (c[i-1]*w[i])/l )) / (
  (  ((w[i]-w[i-1])+w[i]) / l ) + o[i] )

第二个例子: 获取增加的向量

vector = c(1,2,3,4,5,3,9,10)
for (i in rev(1:(length(vector )-1))){
  if (vector [i] > vector [i+1]) vector [i] = vector [i+1]
}
# c(1,2,3,3,3,3,9,10)

0 个答案:

没有答案