gpt4 book ai didi

r - 向量化这个 for 循环(当前行依赖于上面的行)

转载 作者:行者123 更新时间:2023-12-01 11:06:49 26 4
gpt4 key购买 nike

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


set.seed(123) <br/>
given.rand.matrix <- replicate(3,sign(rnorm(100))) <br/>
path <- matrix(NA,101,3) <br/>
path[1,] = c(10,20,30)



for (j in 2:101) {<br/>
  path[j,]<-path[j-1,]+given.rand.matrix[j-1,]
<br/>
}

最终值(给定种子和随机矩阵)是 14、6、34...这是期望的结果...但是...

问题:有没有办法向量化 for 循环?问题在于计算时路径矩阵尚未完全填充。因此,将循环替换为
path[2:101,]<-path[1:100,]+given.rand.matrix
主要返回 NA。我只想知道在 R 中是否可以避免这种类型的 for 循环。

非常感谢您。

最佳答案

绝对可向量化:跳过 path 的初始化,并在矩阵上使用 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

关于r - 向量化这个 for 循环(当前行依赖于上面的行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com