[R] how to read multiple lines per case

Duncan Murdoch murdoch at stats.uwo.ca
Mon Sep 1 23:05:33 CEST 2008


Michael Friendly wrote:
> How can I read a space-delimited file, where the data values for each case
> are folded before column 80, and so appear on two lines for each case?
>
> The first few cases look like this
>
> loc type bio H2S sal Eh7 pH buf P K Ca Mg Na Mn Zn Cu NH4
> OI DVEG 676 -610 33 -290 5.00 2.34 20.238 1441.67 2150.00 5169.05 35184.5
> 14.2857 16.4524 5.02381 59.524
> OI DVEG 516 -570 35 -268 4.75 2.66 15.591 1299.19 1844.76 4358.03 28170.4 
> 7.7285 13.9852 4.19019 51.378
> OI DVEG 1052 -610 32 -282 4.20 4.18 18.716 1154.27 1750.36 4041.27 26455.0
> 17.8066 15.3276 4.79221 68.788
> OI DVEG 868 -560 30 -232 4.40 3.60 22.821 1045.15 1674.36 3966.08 25072.9
> 49.1538 17.3128 4.09487 82.256
>
> The complete data is at:
>
> http://www.math.yorku.ca/SCS/viscollin/data/linthall.dat
>
>   
scan() has a multi.line argument, so this works:

varnames <- 
read.table(url("http://www.math.yorku.ca/SCS/viscollin/data/linthall.dat"), 
nrows=1, as.is=T)[1,]

what <- c(list("a", "a"), as.list(rep(1, length(varnames)-2)))
names(what) <- varnames

data <- 
as.data.frame(scan(url("http://www.math.yorku.ca/SCS/viscollin/data/linthall.dat"), 
skip=1, what=what))

Duncan Murdoch



More information about the R-help mailing list