假设我想在给定正/负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中是否可以避免.
非常感谢你提前.
我需要帮助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)
谢谢.(替换帮助文件没有示例...需要在此处要求澄清)