【发布时间】:2011-01-14 19:47:06
【问题描述】:
是否可以像下面这样矢量化代码?
length(x) <- 100;
x[1] <- 1;
y <- rnorm(100);
for(i in 2:100) {
x[i] <- 2 * y[i] * x[i-1];
}
我很欣赏这是一个微不足道的例子,但它可以说明这个想法。
我经常需要编写代码,其中向量中的第 i 个值取决于第 (i-1) 个值,如果可能,我想编写此代码而不需要 for 循环,作为分析表明具有这种类型操作的函数是我代码中的主要瓶颈。
此操作是否可向量化,因此我不需要在计算中使用for() 循环?
【问题讨论】:
-
你找到了 R 最薄弱的环节:) 恐怕唯一的通用解决方案是将计算降到 C 级别。
标签: r vectorization