You can't expect general-purpose tools like read.table in R to be able
to deal with highly specialized file format.  Here's what I'd start.  It
doesn't put data in the format you specified exactly, but I doubt you'll
need that.  This might be sufficient for your purpose:

dat <- readLines(file("yourdata.dat"))
## Get rid of blank lines.
dat <- dat[dat != ""]
scan.lines <- grep("Scan", dat)
## Chop off the header rows.
dat <- dat[scan.lines[1]:length(dat)]
scan.lines <- scan.lines - scan.lines[1] + 1
lines.per.scan <- c(scan.lines[-1], length(dat) + 1) - scan.lines
## Split the data into a list, with each scan taking up one component.
dat <- split(dat, rep(seq(along=lines.per.scan), each=lines.per.scan))
## Process the data one scan at a time.
result <- lapply(dat, function(x) {
    x <- strsplit(x, "\t")
    rtime <- x[[2]][2]  # second field of second line
    t(matrix(as.numeric(do.call(rbind, c(rtime, x[-(1:2)]))), ncol=2))
})

This is what I get from the data you've shown:

R> result
$`1`
      [,1]     [,2]     [,3]     [,4]
[1,] 0.017 399.8112 399.8742 399.9372
[2,] 0.017 184.0000   0.0000 152.0000

$`2`
      [,1]     [,2]     [,3]     [,4]
[1,] 0.021 399.8112 399.8742 399.9372
[2,] 0.021 181.0000   1.0000 153.0000

Note that you probably should avoid using numbers as column names in a
data frame, even if it's possible.

Andy


From: Bart Joosen
> 
> Hi,
> 
> I recieved an ascii file, containing following information:
> 
> $$ Experiment Number:
> $$ Associated Data:
> 
> FUNCTION 1
> 
> Scan          1
> Retention Time        0.017
> 
> 399.8112      184
> 399.8742      0
> 399.9372      152
> ....
> 
> Scan          2
> Retention Time        0.021
> 
> 399.8112      181
> 399.8742      1
> 399.9372      153
> .....
> 
> 
> I would like to import this data in R into a dataframe, where 
> there is a column time, the first numbers as column names, 
> and the second numbers as data in the dataframe:
> 
> Time  399.8112        399.8742        399.9372
> 0.017 184     0       152
> 0.021 181     1       153
> 
> I did take a look at the read.table, read.delim, scan, ... 
> But I 've no idea about how to solve this problem.
> 
> Anyone?
> 
> 
> Thanks
> 
> Bart
> 
> ______________________________________________
> [email protected] 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.
> 
> 
> 


------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments,...{{dropped}}

______________________________________________
[email protected] 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