在C中实现R代码

时间:2012-07-03 09:01:32

标签: c r

我使用R和I在R中实现了蒙特卡罗模拟,因为for循环需要很长时间。然后我意识到我可以使用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中使用“which”表达式?

1 个答案:

答案 0 :(得分:3)

在开始编写C代码之前,最好重写R代码以使其运行得更快。 sample是矢量化的。你可以在循环外移动呼叫吗?这应该加快速度。更好的是,你可以完全摆脱循环吗?

此外,在编制索引时不需要使用which。 R接受逻辑向量作为指示。比较:

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

最后,我建议不要调用变量tq,因为这些名称都有函数。尝试为变量提供描述性名称 - 它将使您的代码更具可读性。