.Fortran()不返回任何结果

时间:2014-03-05 14:52:16

标签: r fortran

在R中,当我尝试以下代码时

.Fortran("add", x= as.double(2),y= as.double(3))

R只返回参数但没有结果!

$x
[1] 2
$y
[1] 3

add是我在Fortran源文件test.f90中编写的唯一简单函数:

function add (x,y) result (f_result)  
real:: x,y,f_result   
f_result = x+y   
end  function add   

我用过:

gfortran -shared -o test.dll test.f90

获取

加载到R中的test.dll
dyn.load("test.dll")

在上述所有流程中,我都没有收到任何错误或警告消息。所以我无法弄清楚问题出在哪里。我搜索了很多,但找不到解决方案。有什么帮助吗?

顺便说一句,我使用的是windows7(x86),R3.0.2,GNU Fortran(GCC)4.7.0

1 个答案:

答案 0 :(得分:2)

编写子程序,使用参数作为返回值:

  subroutine add(x,y,z)
  real*8 x,y,z
  z=x+y
  end

像这样编译:

$ R CMD SHLIB add.f

> dyn.load("add.so")
> .Fortran("add",as.double(1),as.double(2),as.double(-999))
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

您甚至不需要为参数命名,但它有帮助,因为您可以按名称获取返回值:

> .Fortran("add",as.double(1),as.double(2),ans=as.double(-999))$ans
[1] 3
>