Using functions written in Fortran in R
On 10/27/2011 12:13 PM, Duncan Murdoch wrote:
On 11-10-27 8:02 AM, Paul Hiemstra wrote:
On 10/27/2011 04:24 AM, John Sorkin wrote:
Windows XP R 2.12 I am trying to understand how I can take a subroutine (i.e. function) I have written in Fortran, and call the function in R. I need to know (1) where I should store the Fortran subroutine (2) how to prepare the function for use in R, and (3) how to load and call the function. There's a large literature that describes how to construct packages (including S Programming by Venables and Ripley, which I have referenced), but everything I have seen appears overly complex and generally geared to R running under Linux where as I run R under Windows XP.
Hi, I'm afraid that to some degree running Fortran code from R is complex. Take a look at the .Fortran functions. Another good tip is to take a look at an R package which includes a lot of Fortran and see how they organise their code. Linux is much more ready for these kinds of solutions, but probably you could get it to work under Windows. You need a compiler, set all kinds of enviroment variables etc. Running R under cygwin should make it possible to use the tutorials/books that are geared towards Linux, for Windows.
I think nowadays many Linux distros are no more ready than Windows for this. On Linux, you'll likely need to install development libraries and tools; on Windows, the same. The advantage of Windows is that the tools have all been collected in one place (www.murdoch-sutherland.com/Rtools), so it's pretty easy to get everything going.
You are right. This might be my Linux heart and predjudice towards Windows speaking too loudly :)...altough I was really happy switching from Windows XP to Debian Linux during my PhD (couldn't resist promoting linux ;)). Paul
Duncan Murdoch
good luck, Paul
I want to put R functions and Fortran routines in a library so they
can be easily accessed. If, for example, I write a subroutine in
Fortran called sqrtvector (n, vector), I want to compile it (to a
.dll ?) and then put it in a library so subsequently I can code y<=
sqrtvector(nn, x) in my R programs.
Thanks!
John
John David Sorkin M.D., Ph.D.
Chief, Biostatistics and Informatics
University of Maryland School of Medicine Division of Gerontology
Baltimore VA Medical Center
10 North Greene Street
GRECC (BT/18/GR)
Baltimore, MD 21201-1524
(Phone) 410-605-7119
(Fax) 410-605-7913 (Please call phone number above prior to faxing)
Confidentiality Statement:
This email message, including any attachments, is for ...{{dropped:20}}
______________________________________________ R-help at r-project.org mailing list 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.
Paul Hiemstra, Ph.D. Global Climate Division Royal Netherlands Meteorological Institute (KNMI) Wilhelminalaan 10 | 3732 GK | De Bilt | Kamer B 3.39 P.O. Box 201 | 3730 AE | De Bilt tel: +31 30 2206 494 http://intamap.geo.uu.nl/~paul http://nl.linkedin.com/pub/paul-hiemstra/20/30b/770