随机游走中的R极限矩阵
R Limit matrix in random walk
我有以下用于随机游走的代码,其中我从 i
开始并为每一行累加。
但是,我需要限制每条线上的随机游走。我想到的一种方法是从每一行的索引 j
(位置中的值小于或等于 0 或大于或等于 t
)替换为 null .
simulate_binomial = function(cenarios, rodadas, p){
return(matrix(data=rbinom(cenarios*rodadas, 1, p), nrow=cenarios, ncol=rodadas))
}
i = 2
t = 10
p = 0.8
max_walk = 100
samples = simulate_binomial(1000, max_walk, p)
samples[samples==0] = -1
walk = t(apply(cbind(i, samples), 1, cumsum))
walk1 = apply(walk, 1, function(x) (which((x <= 0) | (x >= t))[1]))
所以我的 walk1
将是每行的索引,其值小于或等于零或大于或等于 t
。但是,我不知道如何在该行中为该索引以后分配空值。
我的意图是分配 null 以便我可以在没有这个 null 部分的情况下精确地绘制并查看废墟对每一行/“场景”的影响。
有人能帮我吗?
您可以将上一个 apply
更改为:
walk1 <- t(apply(walk, 1, function(x) {
inds <- (which((x <= 0) | (x >= t))[1])
x[(inds+1):length(x)] <- NA
x
}))
我有以下用于随机游走的代码,其中我从 i
开始并为每一行累加。
但是,我需要限制每条线上的随机游走。我想到的一种方法是从每一行的索引 j
(位置中的值小于或等于 0 或大于或等于 t
)替换为 null .
simulate_binomial = function(cenarios, rodadas, p){
return(matrix(data=rbinom(cenarios*rodadas, 1, p), nrow=cenarios, ncol=rodadas))
}
i = 2
t = 10
p = 0.8
max_walk = 100
samples = simulate_binomial(1000, max_walk, p)
samples[samples==0] = -1
walk = t(apply(cbind(i, samples), 1, cumsum))
walk1 = apply(walk, 1, function(x) (which((x <= 0) | (x >= t))[1]))
所以我的 walk1
将是每行的索引,其值小于或等于零或大于或等于 t
。但是,我不知道如何在该行中为该索引以后分配空值。
我的意图是分配 null 以便我可以在没有这个 null 部分的情况下精确地绘制并查看废墟对每一行/“场景”的影响。
有人能帮我吗?
您可以将上一个 apply
更改为:
walk1 <- t(apply(walk, 1, function(x) {
inds <- (which((x <= 0) | (x >= t))[1])
x[(inds+1):length(x)] <- NA
x
}))