[R] Writing R package that call Fortran codes

Kodalore Vijayan, Vineetha W vwkv13 at mun.ca
Thu Jun 16 23:27:08 CEST 2016


Thanks for the comment. It resolved now. I have edited my namespace file.
-V

On Thu, Jun 16, 2016 at 3:20 PM, Uwe Ligges <ligges at statistik.tu-dortmund.de
> wrote:

>
>
> On 16.06.2016 20:17, Kodalore Vijayan, Vineetha W wrote:
>
>> Hi,
>>
>>  Its running in R separately using dyn.load(). Thanks!
>>
>>  But my original issue is still there. I still can not build my package.
>> My
>> source code file name in SRC folder is "randomepi.f95" , the package name
>> is "NEpidemic". and the wrapper function in the R folder is "randomepi.r".
>> Not sure if I have to give the same file names.
>>
>> $R CMD BUILD NEpidemic
>>
>> Error in library.dynam(lib, package, package.lib) :
>>>
>>    shared object ‘randomepi.so’ not found
>>    Error: loading failed
>>
>> My namespace file has the following:
>>
>> exportPattern("^[[:alpha:]]+")
>> export(randomepi)
>> useDynLib(randomepi)
>>
>
> You probably need
>  useDynLib(NEpidemic)
> since the package mechanism will build a NEpidemic.so
>
> Best,
> Uwe Ligges
>
>
>
> import(graphics,grDevices,stats, utils)
>>
>>
>> Thanks,
>> Vineetha
>>
>>
>> On Thu, Jun 16, 2016 at 12:02 PM, Eduardo M. A. M.Mendes <
>> emammendes at gmail.com> wrote:
>>
>> Thanks  Bill for pointing this out.  I haven’t noticed it.
>>>
>>> Vineetha, try as.double(rep(0,n)) or as.matrix(rep(0,n)),
>>>
>>> Ed
>>>
>>> On Jun 16, 2016, at 2:54 PM, William Dunlap <wdunlap at tibco.com> wrote:
>>>
>>>  1: .Fortran("dataxy", n = as.integer(n), tmax = as.integer(tmax),
>>>>
>>>  alpha = as.double(alpha), beta = as.double(beta), x = as.double(0,
>>>  length = n), y = as.double(0, length = n), tau = as.integer(0,
>>>  length = n))
>>>
>>> Are you expecting that
>>>     as.integer(0, length=n)
>>> and
>>>     as.double(0, length = n)
>>> will produce vectors of length 'n'?  They do not and short inputs will
>>> usually
>>> cause memory misuse and crashes in the Fortran code.
>>>
>>>
>>>
>>> Bill Dunlap
>>> TIBCO Software
>>> wdunlap tibco.com
>>>
>>> On Thu, Jun 16, 2016 at 10:03 AM, Kodalore Vijayan, Vineetha W <
>>> vwkv13 at mun.ca> wrote:
>>>
>>> Hi Eduardo,
>>>>
>>>>  Thanks for your comments. I haven't tried the way you told me. Now
>>>> when I
>>>> tried, got the following error:
>>>>
>>>> *** caught segfault ***
>>>> address 0x0, cause 'memory not mapped'
>>>>
>>>> Traceback:
>>>>  1: .Fortran("dataxy", n = as.integer(n), tmax = as.integer(tmax),
>>>> alpha = as.double(alpha), beta = as.double(beta), x = as.double(0,
>>>> length = n), y = as.double(0, length = n), tau = as.integer(0,
>>>> length = n))
>>>>  2: out(NULL, NULL, NULL, NULL)
>>>>
>>>> Possible actions:
>>>> 1: abort (with core dump, if enabled)
>>>> 2: normal R exit
>>>> 3: exit R without saving workspace
>>>> 4: exit R saving workspace
>>>> Selection:
>>>>
>>>> Any suggestions?
>>>>
>>>> Thanks,
>>>> Vineetha
>>>>
>>>> On Wed, Jun 15, 2016 at 3:55 PM, Eduardo M. A. M.Mendes <
>>>> emammendes at gmail.com> wrote:
>>>>
>>>> Hi
>>>>>
>>>>> Have you tried to load and run the fortran code using just a wrapper
>>>>> function in R?   I do that as the first step in order to build a
>>>>>
>>>> package.
>>>>
>>>>>
>>>>> Example:   fortran sources -> rk4_mod_r.f90 ,derive_henonheilles.f90,
>>>>> poincare_section.f90
>>>>>
>>>>> a) I use R CMD SHLIB rk4_mod_r.f90 ,derive_henonheilles.f90,
>>>>> poincare_section.f90 - o poincare_section_henonheilles_rk4.so
>>>>> b) Then I write a wrapper function in R, poinc_section_henonheilles.R
>>>>> ...
>>>>>  dyn.load("poincare_section_henonheilles_rk4.so")
>>>>>
>>>>>   out<-.Fortran("section_crossing",
>>>>>                 h=as.numeric(h),
>>>>>                 nphas=as.integer(nphas),..
>>>>> ...
>>>>> c) and call the function as usual.
>>>>>
>>>>> Please note that the function called by .Fortran is the name of the
>>>>> subroutine within poincare_section.f90 and not the filename.
>>>>>
>>>>> I take the opportunity to thank R-developers for making the calling of
>>>>> C
>>>>> and Fortran in R very easy.
>>>>>
>>>>> I hope this helps.
>>>>>
>>>>> regards
>>>>>
>>>>> Ed
>>>>>
>>>>> PS.  If you need an example of a package using Fortran90, please check
>>>>> https://github.com/emammendes/mittagleffler
>>>>>
>>>>>
>>>>>
>>>>> On Jun 15, 2016, at 5:20 PM, Kodalore Vijayan, Vineetha W <
>>>>>
>>>> vwkv13 at mun.ca>
>>>>
>>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to write an R package that calls a Fortran subroutine on my
>>>>>
>>>> Mac
>>>>
>>>>> os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0.   I can build
>>>>>
>>>> and
>>>>
>>>>> load the library but when I try to use it in R I get this error:
>>>>>
>>>>> library(NEpidemic)
>>>>> random_epi(variable_names)
>>>>>
>>>>>
>>>>> Error in .Fortran("random_epi", : "random_pi" not resolved from current
>>>>> namespace (NEpidemic).
>>>>>
>>>>> Then I  tried adding useDynLib(random_epi.f95) in the NAMESPACE file,
>>>>> additional to useDynLib(NEpidemic). After doing that I couldn't build
>>>>>
>>>> the
>>>>
>>>>> package and it gave me another error:
>>>>>
>>>>> Error in library.dynam(lib, package, package.lib) :
>>>>>  shared object ‘random_epi.so’ not found
>>>>> Error: loading failed
>>>>> Execution halted
>>>>> ERROR: loading failed
>>>>>
>>>>> When I checked my src folder, there is only random_epi.o file.  How can
>>>>>
>>>> I
>>>>
>>>>> fix this issue? Any help would be much appreciated. I'm vey new to both
>>>>>
>>>> R
>>>>
>>>>> and Fortran coding, especially in package building.
>>>>>
>>>>> Thanks in advance!
>>>>> Vineetha
>>>>>
>>>>> [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide
>>>>> http://www.R-project.org/posting-guide.html
>>>>>
>>>> <http://www.r-project.org/posting-guide.html>
>>>>
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>         [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> <http://www.r-project.org/posting-guide.html>
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>>>
>>>
>>>
>>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>

	[[alternative HTML version deleted]]



More information about the R-help mailing list