Write to multiple connections or multiple text files
On Fri, 23 Jan 2009, Andersson, Jafet wrote:
Hi all,
I want to modify a large number of text files (ca 4000) by replacing a
value found on a particular line in them with a value from an R object.
For a single file I would normally use:
con<-file ("foo.txt", open="r+")
content<-readLines(con)
content[n]<-"test"
writeLines(content,con)
close(con)
If you know 'n' before opening the connection or can easily figure it out using the system's grep command (on your linux side), you would probably be best off using two calls to the system() function along with your system's head, cat, and tail functions to copy the parts you do not alter to a temp file. Using pipe() with the system's head and tail commands you pick off the line you modify and cat() to append it in between the system() call that copies what preceeds it and and the call that copies what succeeds it. Once the temp file is complete, you replace the orignal with it. HTH, Chuck
For repeating this for several files I can write a for loop around this. However, my problem with this is that it is rather slow. I am therefore wondering if there is any other way to write to multiple connections in a similar way as one can e.g. write to a large number of rows in a matrix simultaneously? (Note that seek() is not so practical for me since the number of bytes before the specific line varies between the files, therefore I use reanLines() and match the right line instead.) My Systems: OS: Windows Server 2003 & Linux Red Hat (interchangeably) R version: 2.7.2 Thanks for any suggestions! ooo Jafet Andersson Eawag - The Swiss Federal Institute of Aquatic Science and Technology Ueberlandstrasse 133 P.O. Box 611 CH-8600 Duebendorf Switzerland Phone: +41 (0)44 823 5358 Fax: +41 (0)44 823 5028 http://www.eawag.ch/index_EN
______________________________________________ R-help at 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.
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901