我使用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”表达式?
答案 0 :(得分:3)
在开始编写C代码之前,最好重写R代码以使其运行得更快。 sample
是矢量化的。你可以在循环外移动呼叫吗?这应该加快速度。更好的是,你可以完全摆脱循环吗?
此外,在编制索引时不需要使用which
。 R接受逻辑向量作为指示。比较:
A.q=phi[,which(q==1)]
A.q=phi[,q==1]
最后,我建议不要调用变量t
或q
,因为这些名称都有函数。尝试为变量提供描述性名称 - 它将使您的代码更具可读性。