1

我使用 R 并在 R 中实现了蒙特卡洛模拟,由于 for 循环,这需要很长时间。然后我意识到我可以使用 R API 在 C 中执行 for 循环。所以我在 R 中生成我的向量和矩阵,然后我从 C 中调用函数(它将执行 for 循环),最后我在 R 中呈现我的结果。但是,我只知道 C 的基础知识,我不知道如何转换一些函数到 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]

最后,我建议不要调用你的变量t,或者q因为有这些名称的函数。试着给你的变量起描述性的名字——它会让你的代码更具可读性。

于 2012-07-03T10:22:36.467 回答