[Rd] call fortran in R
Sébastien Durand
sebastiendurand at videotron.ca
Wed Aug 3 22:29:13 CEST 2005
Hello,
I used a mac G5, R.2.1.1, and G77 3.4.4 and I would like to use and
call a fortran subroutine.
The trouble is that it seems I am not able to correctly load the
compiled code.
Here is what I have done:
In the terminal this how I compiled my fortran code:
R CMD SHLIB ~/Desktop/Fortan_kmeans/kmeans3.f
There is the wrapper I have paste inside de kmeans3.f file:
c THIS IS THE WRAPPER
subroutine wrapper(n, p, nran, mat, ishort, w, z,
+ ntran, istand, k1, k2, iassign, iseed)
integer n,p,kmax
real*8 mat(n,p),sx(kmax,p),sx2(kmax,p),vect(p),
+ xbar(kmax,p),var(kmax,p),mean(p),coord(10)
real*8 D1,Dref,SSE,SSEref,Dvec(kmax),w(p),SST
real*8 CH,CHr(kmax),SSEr(kmax),temp
integer list(n),howmany(kmax),no(n),nobest(kmax)
integer listr(kmax,n),howmanyr(kmax,kmax),nnitr(kmax)
integer ishort(p)
double precision kmeans,
external kmeans
call kmeans(n, p, nran, mat, ishort, w,
+ ntran, istand, k1, k2, iassign, iseed)
end
c THIS IS THE BEGINNING OF THE ORIGINAL FORTRAN CODE
subroutine kmeans(n, p, nran, mat, ishort, w,
+ ntran, istand, k1, k2, iassign, iseed, CHr, SSEr)
......
Once compiled, in R, I get the following:
> dyn.load("/Users/sebas/Desktop/Fortan_kmeans/K-means3.so")
> getLoadedDLLs()
Filename
1
base
2 /Library/Frameworks/R.framework/Resources/library/grDevices/libs/
grDevices.so
3 /Library/Frameworks/R.framework/Resources/library/stats/
libs/stats.so
4 /Library/Frameworks/R.framework/Resources/library/methods/libs/
methods.so
5 /Users/sebas/Desktop/Fortan_kmeans/kmeans3.so
Dynamic.Lookup
1 FALSE
2 FALSE
3 FALSE
4 FALSE
5 TRUE
>
> is.loaded(symbol.For("/Users/sebas/Desktop/Fortan_kmeans/
kmeans3.so"))
[1] FALSE
> is.loaded(symbol.For("kmeans3"))
[1] FALSE
> is.loaded(symbol.For("wrapper"))
[1] FALSE
Then whatever I write in .Fortran("",...), I always get :
Erreur in .Fortran("/Users/sebas/Desktop/Fortan_kmeans/kmeans3.so",... :
the function name "Fortran" is absent of the allocation table
(this warning was translated from french)
So if anyone got a clue, please let me know.
I would be more than happy to find and understand what I am doing wrong!
Cheers
Sébastien Durand
More information about the R-devel
mailing list