尝试在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)