wlangdon at essex.ac.uk
2007-Feb-22 15:09 UTC
[Rd] memory problem read.table v array (PR#9526)
Full_Name: bill langdon
Version: 2.4.1
OS: ubuntu
Submission from: (NULL) (155.245.58.159)
#WBL 22 Feb 2007 ubuntu
R.version
#platform i486-pc-linux-gnu
#arch i486
#os linux-gnu
#system i486, linux-gnu
#status
#major 2
#minor 4.1
#year 2006
#month 12
#day 18
#svn rev 40228
#language R
#version.string R version 2.4.1 (2006-12-18)
#if matrix "a" is created by array "vals" is created ok
#if matrix "a" is created by read.table,
#peak resource use (CPU, memory) by "array()" is excessive
#a = array(0,dim=c(409600,1)); #ok
#a = read.table("big.txt",header=FALSE); #all memory used
#a = read.table("639x639.txt",header=FALSE); #all memory used
#a = read.table("4096.txt",header=FALSE); #all memory used
#a = read.table("4096nocomment.txt",header=FALSE); #all memory used
#a = read.table("tiny.txt",header=FALSE); #ten lines ok
#a = read.table("1000.txt",header=FALSE); #all memory used
a = read.table("639.txt",header=FALSE); #uses
1.6047029GB
dim(a)
dd = 639;
vals = array(a,dim=c(dd,dd));
There is nothing to reproduce here: we do not have 639.txt.
But note that read.table returns a data frame, and ?array has
data: a vector (including a list) giving data to fill the array.
so I do wonder if this is what you intended: you seem to have tried to
create an array list with 639*639 elements. It is certainly not the same
sort of object as array(0,dim=c(409600,1)).
Had 639.txt contained 639 rows of reals, your 'a' would be about
639*639*639*8 bytes, beyond the address space of your machine.
as.matrix(read.table("639.txt", header=FALSE)) might have been what
you
are looking for.
On Thu, 22 Feb 2007, wlangdon at essex.ac.uk wrote:
> Full_Name: bill langdon
> Version: 2.4.1
> OS: ubuntu
> Submission from: (NULL) (155.245.58.159)
>
>
> #WBL 22 Feb 2007 ubuntu
> R.version
> #platform i486-pc-linux-gnu
> #arch i486
> #os linux-gnu
> #system i486, linux-gnu
> #status
> #major 2
> #minor 4.1
> #year 2006
> #month 12
> #day 18
> #svn rev 40228
> #language R
> #version.string R version 2.4.1 (2006-12-18)
>
> #if matrix "a" is created by array "vals" is created ok
>
> #if matrix "a" is created by read.table,
> #peak resource use (CPU, memory) by "array()" is excessive
>
> #a = array(0,dim=c(409600,1)); #ok
> #a = read.table("big.txt",header=FALSE); #all memory
used
> #a = read.table("639x639.txt",header=FALSE); #all memory
used
> #a = read.table("4096.txt",header=FALSE); #all memory
used
> #a = read.table("4096nocomment.txt",header=FALSE); #all memory
used
> #a = read.table("tiny.txt",header=FALSE); #ten lines
ok
> #a = read.table("1000.txt",header=FALSE); #all memory
used
> a = read.table("639.txt",header=FALSE); #uses
1.6047029GB
> dim(a)
> dd = 639;
> vals = array(a,dim=c(dd,dd));
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595