0

R を使ったクラスのタスクでガールフレンドを助けようとしています。コードについてはあまり考えていません。C++ は知っていますが、RI は知りません。

私はドキュメントを読んでいましたが、私を助けてくれるなら、それは素晴らしいことです!

次のコードは、このWeb サイトからのものです。

コードのパート I:

# rm(list=ls(all=TRUE))  
# It's discourteous to wipe out your responder's entire workspace
install.packages("abind")
library(abind)
simHPP<-function(lambda,T,N){
    # lambda: scalar, intensity of the Poisson process 
    # T: scalar, time horizon
    # N: scalar, number of trajectories
    EN <- rpois(N,lambda*T)
     y <- matrix(T,nrow=2*max(EN)+2,ncol=N)*matrix(1,nrow=2*max(EN)+2,ncol=N)
    yy <- abind(y,matrix(1,nrow=2*max(EN)+2,ncol=N)*EN,along=3)
i=1
  while(i<=N){
    if(EN[i]>0){
    yy[1:(2*EN[i]+1),i,1] <- c(0,rep(sort(T*runif(EN[i])),each=2))
    } else {
    yy[1,i,1]=0
    }
    yy[1:(2*EN[i]+2),i,2] <- c(0,floor((1:(2*EN[i]))/2),EN[i])
    i=i+1
  }
  return(yy)
}

機能abindは、どのように機能していますか? R の代入演算子 (=) は (<-) ? のように見えます。

そして、たとえば、これは何をしているのですか?

yy[1:(2*EN[i]+1),i,1] <- c(0,rep(sort(T*runif(EN[i])),each=2))
4

1 に答える 1

1

コード レビューの Web サイトがあります。コンテキストを提供していないコードの解釈を (部分的に) 求めているので、これは適切かもしれません。

(ベクトル名に大文字の T を使用するのは、エラーではありませんが、その名前へのデフォルトの割り当てが論理 TRUE であるため、紛らわしいです。)

abind配列を引数として取り、拡張された配列を返します。2 x 2 x 2 の配列が 2 つありabind、2 x 2 x 4 の配列が得られる場合

abind( array(1:8, c(2,2,2) ),  array (9:16, c(2,2,2)))
#------------
, , 1
     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2
     [,1] [,2]
[1,]    5    7
[2,]    6    8

, , 3
     [,1] [,2]
[1,]    9   11
[2,]   10   12

, , 4
     [,1] [,2]
[1,]   13   15
[2,]   14   16
于 2012-06-04T03:04:36.703 に答える