Have you considered something like the following:

> tst <- c("     23.4   1.5   4.2", "     19.1   2.2   4.1")
> num1 <- regexpr("[0-9]", tst)
> tst1 <- substring(tst, num1)
> b1 <- regexpr(" ", tst1)
> x1 <- as.numeric(substring(tst1, 1, num1))
> tst <- substring(tst1, b1)
> x1; tst
[1] 23.4 19.1
[1] "   1.5   4.2" "   2.2   4.1"

You can put this in a loop with appropriate modification for the end of the strings, etc.

Will this solve your problems?
Best Wishes,
Spencer Graves

Nurnberg-LaZerte wrote:
I'm a great fan of read.table(), but this time the data had a lot of cruft. So I used 
readLines() and editted the char vector to eventually get something like this:
"     23.4   1.5   4.2"
"     19.1   2.2   4.1"
and so on. To get that into a 3 col numeric table, I first just used:

writeLines(data,"tempfile")
read.table("tempfile",col.names=c("A","B","C"))

Works fine, but writing to a temporary file seems ... inelegant? And read.table() doesn't take a char vector as a file or connection argument. The following works but it seems like a lot of code:

data <- sub(" +","",data) # remove leading blanks for strsplit
data <- strsplit(data," +") # strsplit returns a list of char vectors
ndata <- character(0) # vectorize the list of char vectors
for (ii in 1:length(data)) ndata <- c(ndata,data[[ii]]) ndata <- as.numeric(ndata)
dim(ndata) <- c(3,length(data))
data <- t(ndata)
data.frame(A=data[,1],B=data[,2],C=data[,3])


Am I missing something?

Thanks,
Bruce L.

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to