1

私は R を使用しており、for ループのために長い時間がかかるモンテカルロ シミュレーションを R に実装しました。その後、R API を使用して C で for ループを実行できることに気付きました。したがって、R でベクトル、行列を生成し、C から関数を呼び出して (for ループを実行します)、最終的に結果を R で表示します。しかし、私は C の基本しか知らず、いくつかの関数を変換する方法を理解できません。たとえば、次のような R の関数から始めます。

t=sample(1:(P*Q), size=1)

Cでこれを行うにはどうすればよいですか?また、Rには式があります:

A.q=phi[,which(q==1)] 

Cで「どの」式を使用するにはどうすればよいですか?

4

1 に答える 1

3

C コードを書き始める前に、R コードを書き直して実行速度を上げた方がよいでしょう。 sampleベクトル化されています。呼び出しをループ外に移動できますか? それは物事をスピードアップするはずです。さらに良いことに、ループを完全に取り除くことができますか?

whichまた、インデックス作成時に使用する必要はありません。R は論理ベクトルを指標として受け入れます。比較:

A.q=phi[,which(q==1)]
A.q=phi[,q==1]

最後に、変数を呼び出さないことをお勧めtqます。これらの名前の関数があるためです。代わりに、変数にわかりやすい名前を付けてみてください。これにより、コードが読みやすくなります。

于 2012-07-03T10:22:36.467 に答える