R help for a newby
I don't actually think there's an easy way to do this; an alternate way
might be to reformat your data either with fixed-width fields (read.fwf())
or with separator characters. If you insist, though, here is a (probably
overly convoluted) way of doing what I think you want. I would welcome
suggestions for making this more efficient or understandable.
scan.irreg <- function(...) {
row.lens <- count.fields(...) # count fields per line
x <- scan(...) # read data into a vector
maxcol <- max(row.lens) # largest # of columns
nrows <- length(row.lens) # total # of rows
y <- matrix(nrow=nrows,ncol=maxcol)
ind1 <- seq(1,length=nrows,by=maxcol)
ind2 <- cbind(ind1,ind1+row.lens-1)
ind3 <- unlist(apply(ind2,1,function(x)seq(from=x[1],to=x[2])))
ty <- t(y)
ty[ind3] <- x
t(ty)
}
Arguably it would be more efficient and more "R-like" (and certainly
easier to code) to return the answers as a list of variable-length
vectors:
scan.irreg2 <- function(...) {
row.lens <- count.fields(...) # count fields per line
x <- scan(...) # read data into a vector
nrows <- length(row.lens) # total # of rows
split(x,rep(1:nrows,row.lens))
}
You can then use apply or sapply to operate on the elements of the list.
On Mon, 13 Nov 2000, Thomas Likins wrote:
Hello,
Yesterday I asked a question about how to read data from a file
that had test numbers in the first column followed by 4 readings. I received
three responses to my question with in an hour. Thanks to all who responded.
After trying out your responses - which seem to work. I noticed that some of
the data had only one or two reading after the test number.
My next question: what's the command to fill a matrix with an unknown
value of column data. The nice people who responded to me yesterday used
matrix(scan("data.file"),rcol=5, byrow=TRUE). I would have to imagine the
solution is some variation on this theme. I tried several last night
myself, but
with no success. I hope that you will bear with me though this leaning curve.
I HAVE tried to read the documentation, but there is so much information that
it's some what overwhelming. I'm sure all of you know how important it
is to be able to succeed in using a new tool to prevent being frustrated and
giving up prematurely. I am truly in awe over this tool, its power is
amazing.
I hope you will bear with me as I continue in the mastery of this incredible
tool.
Thanks for all your help,
Tom Likins
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
318 Carr Hall bolker at zoo.ufl.edu Zoology Department, University of Florida http://www.zoo.ufl.edu/bolker Box 118525 (ph) 352-392-5697 Gainesville, FL 32611-8525 (fax) 352-392-3704 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._