how to read multiple lines per case
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