読者です 読者をやめる 読者になる 読者になる

Rの練習

2次元ランダムウォーク どう書く?org
1次元版が1行で書けてびっくりですよ.
wにf.xをapplyしようとしてこけたのでリストに変換後lapplyしてunlistしてベクトル化.
もっといいデータ構造を使うと3次元表示のときに点と点の間に線を引けるのではないかと予想.

t <- 1000
#1次元
plot(cumsum(c(0,2*floor(2*runif(t-1))-1)),type="l")
#2次元
x <- 0
y <- 0
f.x <- function(t){switch(t,1,-1,0,0)}
f.y <- function(t){switch(t,0,0,1,-1)}
w <- floor(4*runif(t)+1)
move.x <- unlist(lapply(as.list(w),f.x))
move.y <- unlist(lapply(as.list(w),f.y))
x <- x + cumsum(move.x)
y <- y + cumsum(move.y)
plot(x,y,type="b") 
#2次元版を3次元に表示
library(scatterplot3d)
z <- 1:t
scatterplot3d(x,y,z,pch=20)