我正在考虑在Fortran的R代码中运行关键循环。我在R中调用了很多资源来调用编译好的Fortran子程序,但是没有关于从R调用Fortran代码编译的资源。
我问的原因是我正在构建一个有效的ODE求解器,用于充满阵列的方程式;所以我需要以某种方式将模型方程式提供给Fortran求解器。我考虑过将一个带有模型方程的字符串传递给Fortran子程序而不是评估,但后来我发现this post说这很难,所以如果可能的话我宁愿找到不同的解决方案。
欢迎任何其他创意解决方案。
答案 0 :(得分:4)
您可以使用inline包。从cfunction()
的示例部分开头:
## A simple Fortran example
code <- "
integer i
do 1 i=1, n(1)
1 x(i) = x(i)**3
"
cubefn <- cfunction(signature(n="integer", x="numeric"),
code, convention=".Fortran")
cubefn(n, x)$x