Hi.
 
I have a matrix stored in a large, tab-delimited flat file.  The first row 
contains column names.  Because the matrix is symmetric, the file has lower 
triangular format, so the second row contains one number, the third row two 
numbers, etc.  In general, row k+1 contains k numbers; the matrix has 3000 
rows, so the file has 3001 rows.  The file has variable length records, so each 
row ends with its last piece of data.  I read in the file and produced the full 
symmetric matrix as follows:
 
> mana01 <- scan( file = "C:/mat.dat", sep = "\t", nlines = 1, what = 
> "character" )Read 3000 items> nco <- length( mana01 )> malt <- matrix(0, nrow 
> = nco, ncol = nco )> colnames( malt ) <- mana01> rownames( malt ) <- mana01> 
> for ( i in 1:3000 ) { malt[ i, (1:i) ] <- scan( file="C:/mat.dat", skip = i, 
> n = i, quiet = TRUE ) }
> mat <- malt + t( malt ) - diag( diag( malt ) )>
 
The for loop took a couple of hours to complete.  I suspect there's a much 
faster way to do this.  Any suggestions?  Thanks!
 
--  TMK  --212-460-5430 home917-656-5351 cell
        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org 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.

Reply via email to