[R] .C, .Fortran and DUP

gb gb at stat.umu.se
Fri Jul 7 10:44:02 CEST 2000


In an  R  function, I have a huge matrix  x, which I update
several times. For some reasons I want to do the updating
with a call to  .Fortran  (simpler than  .C  with matrices,
it seems). This is my (simplified) code:

In the  R  function:
--------------------
   ...
   x <- matrix(0, nrow = n.row, ncol = n.col)
   storage.mode(x) <- "double"
   for (i in reps)
   {
      stuff <- ...
      .Fortran("updatex",
               as.double(stuff),
               as.integer(n.row),
               as.integer(n.col),
               x,
               DUP = FALSE)
   }
   x 
}       

The FORTRAN side:
-----------------
      subroutine updatex(stuff, nrow, ncol, x)
      implicit none
      integer nrow, ncol             
      double precision stuff(ncol), x(nrow, ncol)
      (...updating x...)
--------------------------------------------------

I use  DUP = FALSE  to avoid copying the huge matrix  x,
but if I read  ?.C  correctly, this is *dangerous* 
because of the repeated calls to  .Fortran.
However, it works fine for me (so far).

Question: *Is* this dangerous? I have the option of writing
the whole loop in Fortran, of course, but I want to avoid that
if possible.

Göran
-- 
 Göran Broström                      tel: +46 90 786 5223
 Department of Statistics            fax: +46 90 786 6614
 Umeå University
 SE-90187 Umeå, Sweden             e-mail: gb at stat.umu.se

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list