RE: [R] converting an ASCII file to a matrix

From: <OlsenN_at_pac.dfo-mpo.gc.ca>
Date: Wed 11 May 2005 - 02:26:14 EST


This seems to work but it's a bit ugly with the loop (I'm sure you could replace the loop with "apply").

asc2mat <- function(fname) {
  x <- sapply(scan(fname, "character", sep="\n"), strsplit, "")   rlen <- sapply(x, length)
  res <- matrix(nrow=length(bar), ncol=max(rlen))   

  for (i in 1:nrow(res)) {

     res[i,1:rlen[i]] <- x[[i]]
  }
  return(res)
}  

Norm Olsen

-----Original Message-----
From: r-help-bounces@stat.math.ethz.ch
[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Berton Gunter Sent: Tuesday, May 10, 2005 9:07 AM
To: 'Michael Graber'; r-help@stat.math.ethz.ch Subject: RE: [R] converting an ASCII file to a matrix

Michael:

Ah ... the bane of real data analysts everywhere: getting the data from its original format into (R )- usable form for data analysis

This has nothing to do with R-WinEdit, AFAICS.

My approach would be to simply use readLines() to read the lines in as character strings and then process them by grep and/or regexpr() to extract the bits I wanted. If the formatting is fixed, substring() may also be useful. You will also need to convert the resulting character representation of numerics to numerics via as.numeric().

If you haven't worked through regular expressions before (?regexp), you will find this a bit of a chore; but it is well worth the effort, as they are invaluable for this sort of thing. There are numerous web tutorials to help (google on 'regular expressions').

Cheers,

"The business of the statistician is to catalyze the scientific learning process." - George E. P. Box    

> -----Original Message-----

> From: r-help-bounces@stat.math.ethz.ch 
> [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Michael Graber
> Sent: Tuesday, May 10, 2005 8:45 AM
> To: r-help@stat.math.ethz.ch
> Subject: [R] converting an ASCII file to a matrix
> 
> Dear R-WinEdit users,
> 
> I got a simple question, but somehow I cannot find the answer, 
> although I have tried a lot!
> I got an ASCII-file and I want to import it into R, so that every 
> character is defined by [i;j].
> The rows are not of the same length.
> 
> the file looks like the following shortened abstract example:
> 
> name: xxxxx xxxx
> age: 9.9.99
> record number: 999
> title: xxxxx xxxx xxx
> keywords: xxx xx
> 
> "white space"
> 
> name: yyyy yyyyyyyyyyyy
> age: 8.8.88
> record number: 8
> title: yyyy yy yyyy
> keywords: yyyyyyyyyyy yyyyyyyy yyy
> 
> "white space"
> I would be very grateful for your help!
> 
> Michael Graber
> michael.graber@mail.uni-wuerzburg.de
> 
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
>

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html

R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 11 02:38:15 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:31:41 EST