4
Rにはフォールド機能Reduce
があります。それに対応する展開機能はありますか?たとえば、開始値が与えられ、配列を取得するために関数を再帰的に適用しますか? forループは仕事をしますが、もっとR風の方法があれば疑問です。おかげで、Rの展開機能?
たとえば、8つのラインのプロットのローレンツアトラクター以下のコード(F# Lorenz Attractor in 35 linesミミック。しかし、ループの醜い。私たちはより良い行うことができますか?
s <- 10; b <- 8/3; p <- 28
dt <- 0.003; n<-2000
x <- matrix(0,n,3); x[1,] <- c(10,0,20)
for (i in 2:n){
x[i,] <- x[i-1,] + c(s * (x[i-1,2] - x[i-1,1]),x[i-1,1] * (p - x[i-1,3]) - x[i-1,2],x[i-1,1] * x[i-1,2] - b * x[i-1,3]) * dt
}
library(rgl)
plot3d(x,type= 'l',col = 'red')
おかげで、いくつかの括弧を行方不明になったのと、 '<< - 'ヒント。 – learnbasicR
'Reduce'の' accumulate'引数にも注意してください。例えば、Benの答えで構築する: 'do.call(rbind、(x、y) )-y、x * yb * z)* dt)、1:n、X、accum = T)[ - 1]) ' – Charles
@Ben Bolker - あなたのコードで同じ回答(またはプロット) OPとして? – Tommy