Hello, I am trying to run a piece of Fortran code from R, and I am having trouble passing an array to the fortran subroutine. My attempts to pass an array into the fortran are producing memory errors, and I cannot find an example that performs the task. I have looked at "Writing R Extensions", and understand in concept what needs to happen, but all the examples are written in C.
Below are my fortran subroutine, the R function that calls it, and the R output. ====== foo.F90 ====== SUBROUTINE testRwrapper(n) DOUBLE PRECISION :: n(:) INTEGER :: i ! answer = factorial(n) do i=1,3 n(i) = n(i) + i/1.0 end do END SUBROUTINE testRwrapper ====== test.R ====== foo <- function(n) { # If the library hasn't been loaded yet, load it if (!is.loaded('testRwrapper')) { dyn.load('foo.dylib') } returned_data = .Fortran('testRwrapper', n=as.double(n))#, # Return the value of the result parameter return(returned_data$n) } ====== R result ====== > source('test.R') > foo(c(1.1, 2.2, 3.3, 4.4)) *** caught segfault *** address 0x3ff19999, cause 'memory not mapped' Traceback: 1: .Fortran("testRwrapper", n = as.double(n)) 2: foo(c(1.1, 2.2, 3.3, 4.4)) Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace ========================= I have tried various combinations of pointers in the fortran subroutine. I can pass a single value without a problem. That is, eliminating the do loop from foo.F90 and making n a scalar works. Could someone suggest the proper Fortran syntax, or point me toward an F90/R example? Many thanks, Tim ______________________________________________ R-help@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.