[Rd] call fortran in R

Sebastien Durand sebastiendurand at videotron.ca
Thu Aug 4 01:51:08 CEST 2005


Hi Paul,

In fact, I used the three points just hide the 
long and exhaustive serie of parameters.

>From what I understood of the error warnings, my 
serie of parameters didn't even had the chance to 
be properly read and shall not be the cause of 
what we are seeing.
Even so I change the function name in 
.Fortran("name",....), I get the same error 
message.  It is like if it couldn't find the 
library I have dynamically loaded using dyn.load.
And I don't understand why, or where shall I look to fix such issue.

By the way you spoke about R's registration 
tables, could you tell me where should I look to 
find such info?

Thanks.

Sébastien

>On Wed, 3 Aug 2005, =?iso-8859-1?Q?S=E9bastien_Durand_ wrote:
>
>>  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)
>
>Shouldn't that be .Fortran("wrapper", <arglist>) or something
>to that effect? I'm surprised that a null string didn't
>crash the program.
>
>Might want to look into R's registration tables as well.
>That way you might get some additional debugging help.
>
>----------------------------------------------------------
>SIGSIG -- signature too long (core dumped)
>
>______________________________________________
>R-devel at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list