Hi Fabio,
Your function myrbeta returns void so assigning the output isn't going
to work. Instead you need to call it like a FORTRAN subroutine.
Also, I added arguments for the parameters of the beta and moved the
fseedi and fseedo calls outside of the loop.
This is a pretty basic FORTRAN programming question and there are lots
of books that can help you learn FORTRAN.
subroutine mat(x,l,c,pa,pb)
integer l,c
double precision x(l,c), a
integer i,j
call fseedi()
do j = 1, c
do i = 1, l
call myrbeta(x(i,j),pa,pb)
enddo
enddo
call fseedo()
end
In R call it like this:
storage.mode(x) <- "double"
.Fortran("mat", x = x, as.integer(l), as.integer(c), as.double(1),
as.double(2))
Cheers,
Kjell
On 30 juin 09, at 20:02, Fabio Mathias wrote:
Thanks Mr. Barry Rowlingson
However, the matrix appears to zeros!
Notice the code below! Please!
Code in fortran
subroutine mat(x,l,c,a)
integer l,c
double precision x(l,c), a
integer i,j
do j = 1, c
do i = 1, l
call fseedi()
x(i,j) = myrbeta(a,1,2)
call fseedo()
enddo
enddo
end
In R:
dyn.load("func.so")
x <- matrix(0,5,6)
l <- nrow(x)
c <-
ncol(x)
a <- 0
..Fortran("mat", x = x, l, c, as.double(a))
Results:
$x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0 0 0 0 0
[2,] 0 0 0 0 0 0
[3,] 0 0 0 0 0 0
[4,] 0 0 0 0 0 0
[5,] 0 0 0 0 0 0
[[2]]
[1] 5
[[3]]
[1] 6
[[4]]
[1] 1
Thanks!!!
Fábio Mathias Corrêa UFLA
____________________________________________________________________________________
[[elided Yahoo spam]]
[[alternative HTML version deleted]]
<ATT00001.txt>
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel