小编mor*_*ode的帖子

vector for this for循环(当前行取决于上面的行)

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

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

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

path[2:101,]<-path[1:100,]+given.rand.matrix

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

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

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

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

非常感谢你提前.

r vectorization

3
推荐指数
1
解决办法
422
查看次数

意外的替换行为

我需要帮助replace()命令

replace(c(3,2,2,1),1:3,4:6)
Run Code Online (Sandbox Code Playgroud)

我期待输出6,5,5,4但得到了4,5,6,1

我究竟做错了什么?

我对替换是什么的理解是:它查找第二个参数中第一个参数的元素的索引值(例如3是1:3中的第3个元素),然后用相同的索引替换第三个参数中的元素(例如,4:6中的第3个元素是6,因此我期望向量中的第一个元素为6)

谢谢.(替换帮助文件没有示例...需要在此处要求澄清)

r

2
推荐指数
1
解决办法
153
查看次数

标签 统计

r ×2

vectorization ×1