Dear Suzen,

Thank you for your reply.

I don't know why but it looks like my previous mail was truncated.
Here is the R function (described in the step #4 in my previous mail) that I 
wrote. It contains .Fortran but like I said earlier, it didn't work.
************************************
img<-c(n_col)
Read_binary<-function(n_samples,line,type) {
   as.integer(n_samples),
   as.intger(line),
   as.integer(typ),
   img=as.single(img) 
}
************************************

Armel

-----Original Message-----
From: mehmet.su...@gmail.com [mailto:mehmet.su...@gmail.com] On Behalf Of 
Suzen, Mehmet
Sent: Friday, April 19, 2013 3:17 AM
To: Kaptue Tchuente, Armel
Subject: Re: [R] How to read a direct access file by connecting fortran with R ?

On 19 April 2013 07:05, Kaptue Tchuente, Armel <armel.kap...@sdstate.edu> wrote:
> Hello all,
>
> I would like to read the specific line number row of a direct access file 
> (which is stored as a n_row*n_col matrix of elements kind=p) without reading 
> all the preceding lines (i.e 1,2,..,row-1).
>
> Is there a function in R that can perform this task?
>
> To solve my issue, I tried without to call Fortran from R by doing the 
> following steps:
>
> I) I wrote a subroutine in fortran called read_binary.f90
> ************************************
> Subroutine read_binary (n_col,row,img)
>
>    integer*1    :: im1(n_col)
>    integer*1    :: im2(n_col)
>    integer*1    :: im2(n_col)
>
>    
> open(10,file=binary_file,access=direct,action=read,status='old',recl=n_col*p)
>    if(p==1) then
>      read(10,rec=row) img1
>       img=img1
>    else if(p==2) then
>       read(10,rec=row) img2
>       img=img2
>    else
>      read(10,rec=row) img3
>       img=img3
>    endif
>    close(10)
>
> End subroutine read_binary
> ************************************
>
> II) R CMD SHLIB read_binary.f90
>
> III) dyn.load("read_libray.so")
>
> IV) Then in R,  I tried many variant of the following function but I 
> wasn't able to store the line number row into the vector img


At this stage you need to use .Fortran;

  .Fortran("read_binary", as.integer(n_samples),  as.intger(line), 
img=as.single(img));

See ?.Fortran
______________________________________________
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.

Reply via email to