我有一个随机游走功能
random.walk = function(n){
return(cunsum(c(0, sample(c(-1, 1), size = n-1, replace =TRUE))))
}
我想做递归随机游走功能。我所做的是
recursive.rwalk=function(n){
return(random.walk(n-1) + random.walk(n))
}
但后来我收到警告信息。请帮帮我!谢谢
我有一个随机游走功能
random.walk = function(n){
return(cunsum(c(0, sample(c(-1, 1), size = n-1, replace =TRUE))))
}
我想做递归随机游走功能。我所做的是
recursive.rwalk=function(n){
return(random.walk(n-1) + random.walk(n))
}
但后来我收到警告信息。请帮帮我!谢谢
您正在尝试添加两个不同长度的向量:n-1
并n
在此行中:random.walk(n-1) + random.walk(n)
。R 警告您将第一个向量的第一个元素添加到第二个向量的最后一个元素(值回收)。
尽管在 R 中递归地计算随机游走显然不是一个好主意,但您可以这样做。首先,您必须递归调用recursive.rwalk
函数,而不是random.walk
函数。接下来,您仍然需要对每个步骤进行采样。最后,您需要告诉函数何时停止递归调用自身。这是一种可行的方法:
recursive.rwalk=function(n){
if (n==0) return(0)
rw <- recursive.rwalk(n-1)
return(c(rw, rw[n-1]+sample(c(-1,1), 1)))
}
set.seed(123)
recursive.rwalk(5)
## [1] 0 1 0 1 2