如何将可选参数从Fortran子例程传递给R包装器

时间:2016-09-02 20:35:01

标签: r fortran wrapper gfortran

我有一个Fortran子例程,它在调用中使用了一个可选参数。

escuelasDeportivas.controller('escuelasDeportivasVerLogroCtrl', ['Upload'])

我为这个子例程尝试了以下R包装器并收到错误消息:

subroutine data (n,ns,alpha,covmat,x,y) 

integer, intent(in):: n,ns
double precision, intent(in)  :: alpha
double precision, intent(in), optional ::covmat(n,ns)
double precision, intent(out) :: x(n),y(n)
....
end subroutine data

我不确定我是否在.Fortran()调用中正确传递了参数。我在网上找不到任何有用的东西。

 Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x), : 
'data' must be of a vector type, was 'NULL'

1 个答案:

答案 0 :(得分:0)

更新:将covmat = as.matrix(covmat)更改为covmat = as.vector(covmat)后没有错误消息。

到目前为止,我发现的唯一解决方案是在.Fortran()调用中添加一个标志变量和可选参数,并在子例程中传递两者。现在的问题是'n'可选参数,我会'在这种情况下你会有更多的标志。还有其他建议吗?