[R] File reading.
Roger Bivand
Roger.Bivand at nhh.no
Wed Oct 17 13:53:29 CEST 2001
On Wed, 17 Oct 2001, Randall Skelton wrote:
> Hi all,
>
> Appologies for the rather basic IO question but I am rather new to R...
> Migrated from IDL/Matlab recently. I have a rather simple Fortran
> control file (sigh...) that I am trying to parse and read using R. My
> problem is that the file's format is somewhat flexible. Imagine:
>
> ---
> 1> 39 1901
> 2> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> 3> 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58
> 4> 650.0 650.5 651.0 651.5 652.0 652.5 653.0 653.5 654.0
> 5> 654.5 655.0 655.5 656.0 656.5 657.0 657.5 658.0 658.5
> ...
> 7> 1599.5 1600.0
> 8>
> 9> 1 1 0
> 10> Xtemp.wf
> 11> 2
> 12> Xtemp.noise
> 13> 4
> 14> Xtemp.Sa
> ---
>
> Line 1 contains 2 numbers (nx, ny) which can easily be read using scan.
> If nx>0 then there are nx values to be read next (i.e. lines 2 and 3 have
> 39 values). Likewise, with ny>0, lines 4-7 give 1901 values. However, if
> nx or ny are less than 0, then the data block for lines 2-3 or lines 4-7
> will not be present and a generic index is made... In psudo code:
>
> ---
> # get the file handle for the case file
> fin=fopen(casefile);
>
> # read the file
> in=fscanf(fin,'%f',2);
>
> # first 2 numbers in the case file give the size
> nx=in(1);
> ny=in(2);
>
> # read or construct the x label
> if nx>0
> xlab=fscanf(fin,'%f',nx);
> else
> nx=-nx;
> xlab=0:(nx-1);
> end
>
> # read or construct the y label
> if ny>0
> ylab=fscanf(fin,'%f',ny);
> else
> ny=-ny;
> ylab=1:ny;
> end
> ---
>
> My problems are that R seems to be tied to the line numbers on which data
> is found and that the scan function doesn't remember where it last was...
> Is there some C-like fopen/fread construct that I am missing?
>
Maybe try file(), open(), and readLines(), see Brian Ripley's introduction
to using connections in R-News number 1, pages 16-17.
Roger
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no
and: Department of Geography and Regional Development, University of
Gdansk, al. Mar. J. Pilsudskiego 46, PL-81 378 Gdynia, Poland.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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