从R语言调用Fortran函数

4
使用 .Fortran 可以方便地从R中调用Fortran子程序,并且网上有很多示例。但是,我没有找到任何直接从R中调用Fortran函数的方法。
目前,我使用一个接口来获取Fortran函数并在子程序中使用它,但是为所有外部函数这样做非常耗时。
是否有一种优雅的方法可以直接从R中调用Fortran函数?

1
文档非常清晰:“请注意,编译后的代码不应该通过除了其参数以外的方式返回任何内容:C函数应该是void类型,Fortran子程序应该是子例程。” - David Heffernan
没错。我只是在想,是否没有办法直接从R调用Fortran函数。 - Moji
1
你的意思是,已经阅读了明确说“X不可能”的文档后,你的问题是“X是否可能?” - David Heffernan
1
@DavidHeffernan,公正地说,Moji的文档中写着“使用Y是不可能实现X的”,所以如果除了“Y”还有其他方法,那么“X是否可能?”的答案并不是一个直接的结论。 - francescalus
@DavidHeffernan:阅读了我的问题后,我从未说过它应该使用.Fortran,就像@francescalus提到的那样。所以你可以省略数学证明。 - Moji
1个回答

6

在使用.Fortran.C时,无法调用Fortran函数,正如文档中所述:

请注意,编译后的代码不应返回除其参数之外的任何内容:C函数应为void类型,Fortran子程序应为子例程。

使用.Call(以及.External)可以调用Fortran函数,但是可以说,这样做会使为Fortran函数编写子例程包装看起来微不足道:最少您将编写一个C包装器在中间被调用(使这又成为“间接”Fortran函数调用 - 直接调用Fortran函数将需要更多的工作)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接