将此for循环矢量化(当前行取决于上面的行)

将此for循环矢量化(当前行取决于上面的行),r,vectorization,R,Vectorization,假设我想要创建n=3个随机行走路径(路径长度=100),给定一个预生成的加/减矩阵(100x3)。第一条路径从10开始,第二条路径从20开始,第三条路径从30开始: 种子集(123) given.rand.matrix可明确矢量化:跳过路径的初始化,并在矩阵上使用cumsum: path <- apply( rbind(c(10,20,30),given.rand.matrix), 2, cumsum) > head(path) [,1] [,2] [,3] [1,]

假设我想要创建n=3个随机行走路径(路径长度=100),给定一个预生成的加/减矩阵(100x3)。第一条路径从10开始,第二条路径从20开始,第三条路径从30开始:


种子集(123)

given.rand.matrix可明确矢量化:跳过
路径的初始化,并在矩阵上使用
cumsum

path <- apply( rbind(c(10,20,30),given.rand.matrix), 2, cumsum)

> head(path)
     [,1] [,2] [,3]
[1,]   10   20   30
[2,]    9   19   31
[3,]    8   20   32
[4,]    9   19   31
[5,]   10   18   32
[6,]   11   17   31
> tail(path)
       [,1] [,2] [,3]
[96,]    15    7   31
[97,]    14    8   32
[98,]    15    9   33
[99,]    16    8   32
[100,]   15    7   33
[101,]   14    6   34
路径头(路径)
[,1] [,2] [,3]
[1,]   10   20   30
[2,]    9   19   31
[3,]    8   20   32
[4,]    9   19   31
[5,]   10   18   32
[6,]   11   17   31
>尾部(路径)
[,1] [,2] [,3]
[96,]    15    7   31
[97,]    14    8   32
[98,]    15    9   33
[99,]    16    8   32
[100,]   15    7   33
[101,]   14    6   34

最近类似的“是”。谢谢你的快速回复。虽然我试图解决的实际问题比我发布的要复杂一点,但你的回答告诉我,我寻找的答案可能存在于apply函数族中。checkmark记住apply()不是矢量化的,但它比循环更漂亮。真正使Prasad的代码快速的是向量化的cumsum()函数。因此,请使用apply(),但一定要应用矢量化函数,以加快速度。