Hi Elio,
Try this:
Assuming that there is a single blank row separating the matrices:
lines1<- readLines(textConnection("aa5 aa10 b253 b254
aa5 0 1 1 1
aa10 1 0 1 1
b253 1 1 0 1
b254 1 1 1 0
aa5 aa9 b27 b29
aa5 0 1 1 1
aa9 1 0 1 1
b27 1 1 0 1
b29 1 1 1 0
a15 b3 g23 i250
a15 0 1 1 1
b3 1 0 1 1
g23 1 1 0 1
i250 1 1 1 0
a15 a16 q27 v87
a15 0 1 1 1
a16 1 0 1 1
q27 1 1 0 1
v87 1 1 1 0"))
lst1<-lapply(split(lines1,cumsum(lines1=="")),function(x)
as.matrix(read.table(text=x[x!=""],sep="",row.names=1)))
names(lst1)<- paste0("m",seq_along(lst1))
lst1[1:2]
#$m1
# aa5 aa10 b253 b254
#aa5 0 1 1 1
#aa10 1 0 1 1
#b253 1 1 0 1
#b254 1 1 1 0
#
#$m2
# aa5 aa9 b27 b29
#aa5 0 1 1 1
#aa9 1 0 1 1
#b27 1 1 0 1
#b29 1 1 1 0
#Reading from file: The data you showed seems to be tab separated. It could be
different.
lines2<- gsub("\t","", readLines("Elio.txt"))
##In case it is just space:
#lines2<- readLines("Elio.txt")
lst2<-lapply(split(lines2,cumsum(lines2=="")),function(x)
as.matrix(read.table(text=x[x!=""],sep="",row.names=1)))
names(lst2)<- paste0("m",seq_along(lst2))
identical(lst1,lst2)
#[1] TRUE
A.K.
Hi,
I have another question
related to the same problem. I have a text file with about 350 matrices
each separated by a blank row. My question is how to make R believe each matrix
is separate and has a specific name m1, m2,....m350. Below is an example:
aa5 aa10 b253 b254
aa5 0 1 1 1
aa10 1 0 1 1
b253 1 1 0 1
b254 1 1 1 0
aa5 aa9 b27 b29
aa5 0 1 1 1
aa9 1 0 1 1
b27 1 1 0 1
b29 1 1 1 0
a15 b3 g23 i250
a15 0 1 1 1
b3 1 0 1 1
g23 1 1 0 1
i250 1 1 1 0
a15 a16 q27 v87
a15 0 1 1 1
a16 1 0 1 1
q27 1 1 0 1
v87 1 1 1 0
This is what I get from R, how to make it believe each one is a matrix and name
the matrix m1, m2, m3 and so on.
Thanks a lot!!
______________________________________________
[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.