Faster Printing Alternatives to 'cat'
Hi Hadley, I had to do it by line. Because, in practice, I will manipulate the figures and string before printing it. And I can't bind these results into one new object, because there are literally millions of this lines, and R object can't handle that in my 4GB Ram memory. I tried your suggestion already, I have memory problem
x <- cbind(dat$V1, as.character(dat$V2))
Error: cannot allocate vector of size 4.2 Gb Execution halted - Gundala Viswanath Jakarta - Indonesia
On Sat, Jan 17, 2009 at 11:39 PM, hadley wickham <h.wickham at gmail.com> wrote:
On Sat, Jan 17, 2009 at 7:59 AM, gundalav <gundalav at gmail.com> wrote:
Dear Jim and all, Allow me to ask your expert opinion. Using the data (16Mb) downloadable from here: http://drop.io/gundalav/asset/test-data-zip It took this long under 1994.070Mhz Cpu Linux, using "write.table"
proc.time() - ptm1
user system elapsed
16581.833 5787.228 21386.064
__MYCODE__
args <- commandArgs(trailingOnly=FALSE)
fname <- args[3]
dat <- read.delim(fname, header=FALSE);
output <- file('output_writetable.txt', 'w')
ptm1 <- proc.time()
for (i in 1:nrow(dat)) {
#cat(dat$V1[i]," ", as.character(dat$V2[i]),"\n", sep="")
write.table(cbind(dat$V1[i], as.character(dat$V2[i])),
file=output, sep="\t", quote=FALSE, col.names=FALSE, row.names=FALSE)
}
close(output)
proc.time() - ptm1
__END__
Perhaps I misunderstood you. But seems that this is
truly slow. Is there a way I can speed it up?
Don't do it line by line!
write.table(dat[, c("V1", "V2")], file='output_writetable.txt',
sep="\t", quote=FALSE, col.names=FALSE, row.names=FALSE)
Hadley
--
http://had.co.nz/