[R] simple addition in R, now fast & easy!

From: Joel Bremson <joel3000_at_gmail.com>
Date: Fri 29 Apr 2005 - 07:41:01 EST


At last, simple addition in R is now fast and easy!!!

They said it could never be done, but they've never heard of Fortran.

In order to add two numbers in R before you had to type:

> 7 + 3

It was tedious to type and several hours could pass as you waited for your return value.

So, imagine the excitement around your lab or office when you type in:

>.Fortran("add",as.numeric(7),as.numeric(3),as.numeric(0))

and get your result back faster then a greased goat!

Well now you can!

Here's how:

First create a file called add.f with the following code:

---------------------clip--------------------------------

c Add two numbers

subroutine add(a,b,c)
double precision a,b,c
c = a + b
end

------------------end clip------------------------------

Don't disturb the spacing, Fortran is fussy about that.

Now compile you're code:

g77 -c add.f

Now make a shared lib for R (unix/linux):

R CMD SHLIB add.o

This will create a file called 'add.so'

Now go into R:

>dyn.load("add.so") # you might need an explicit path here

And now you too have the power of fast, easy, simple addition!!

>.Fortran("add",as.numeric(7),as.numeric(3),as.numeric(0))

If you want to get real fancy you can put your .Fortran call into a function:

myadd = function(a,b){
out = .Fortran("add",as.numeric(a),as.numeric(b),c=as.numeric(0)) return(out$c)
}

> x = myadd(3,7)

[1] 10

And you've done it! Be vanquished naysayers, simple addition will trouble us no more!

(I thought a very simple tutorial on integrating Fortran code into R might be of use.)

Joel Bremson
jbremson@wald.ucdavis.edu
Statistics Graduate Student
UC Davis

        [[alternative HTML version deleted]]



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Apr 29 07:50:47 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:28 EST