
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]]


