私はこの短い関数を持っています:
- 変換行列、初期ベクトル、および変換数を取得します
- 結果のベクトルを計算し、それらをデータ フレームにスタックする
- データ フレーム変数をプロットし、データ フレームを返す
ここに私の機能があります:
###### initvec _ initial vector
###### matrv _ transformation matrix
###### ns _ number of simulations
markovforplot<-function(initvec,matrv,ns) {
ns <- as.integer(ns)
initvec <- c()
exposant <- c(1:ns)
for (i in 1:ns) {
library(expm)
toprint<-apply((matrv %^% i)*initvec,2,sum)
dataf <- data.frame(exposant=exposant,toprint=toprint)
plot(dataf$exposant, dataf$toprint, type="l")
}
return(dataf)
}
適切にフォーマットされた行列とベクトルでテストする場合
(markovforplot(initvec=initvec,matrv=m,ns=20)
返されるエラーは次のとおりです。
Error in apply((matrv %^% i) * initvec, 2, sum) :
dims [product 16] do not match the length of object [0]