[R] How to manipulate the pointer of a file?
Dear friends. With file( ) to obtain a pointer of a file, every time we use scan ( ) to read one row of it, the pointer will point to the next row of the file. In the following example, d1 and d2 are obtained the same way but they correspond to different rows of the same file because the pointer of the file moves down a row when a row of the file is read. The following is an example: a1 - list(name=Fred, wife=Mary, no.children=3) a2 - list(name=Tom, wife=Joy, no.children=9) a3 - list(name=Paul, wife=Alic, no.children=5) write.table(a1, file = tt.csv, sep=',',row.names=FALSE,col.name=TRUE) write.table(a2, file=tt.csv, sep=',', append=TRUE, row.names=FALSE, col.names=FALSE) write.table(a3, file=tt.csv, sep=',', append=TRUE, row.names=FALSE, col.names=FALSE) fp=file(tt.csv,r) c=scan(file=fp, sep=',', what=list(c1=, c2=, c3=), flush=TRUE, nlines=1) d1=scan(file=fp, sep=',', what=list(name=, wife=, no.kids=0), flush=TRUE, nlines=1) d1 R output: --- $name [1] Fred $wife [1] Mary $no.kids [1] 3 - d2=scan(file=fp, sep=',', what=list(name=, wife=, no.kids=0), flush=TRUE, nlines=1) d2 R Output: $name [1] Tom $wife [1] Joy $no.kids [1] 9 -- My question is, how to manipulate the pointer of the file further? For example, what if I need the pointer to go back to the previous row? Best Wishes Yuchen Luo [[alternative HTML version deleted]] __ [EMAIL PROTECTED] 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.
Re: [R] How to manipulate the pointer of a file?
On Thu, 12 Apr 2007, Yuchen Luo wrote: With file( ) to obtain a pointer of a file, every time we use scan ( ) to read one row of it, the pointer will point to the next row of the file. In the following example, d1 and d2 are obtained the same way but they correspond to different rows of the same file because the pointer of the file moves down a row when a row of the file is read. Yes, as documented. Isn't that good? [...] My question is, how to manipulate the pointer of the file further? For example, what if I need the pointer to go back to the previous row? See ?seek, which is linked from the help page for file(). Using accurate terminology helps: file() gives you a connection. Part of a connection is two positions (one each for read and write). -- Brian D. Ripley, [EMAIL PROTECTED] 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, UKFax: +44 1865 272595 __ [EMAIL PROTECTED] 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.
Re: [R] How to manipulate the pointer of a file?
?seek -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare [EMAIL PROTECTED] (801) 408-8111 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Yuchen Luo Sent: Thursday, April 12, 2007 9:33 AM To: [EMAIL PROTECTED] Subject: [R] How to manipulate the pointer of a file? Dear friends. With file( ) to obtain a pointer of a file, every time we use scan ( ) to read one row of it, the pointer will point to the next row of the file. In the following example, d1 and d2 are obtained the same way but they correspond to different rows of the same file because the pointer of the file moves down a row when a row of the file is read. The following is an example: a1 - list(name=Fred, wife=Mary, no.children=3) a2 - list(name=Tom, wife=Joy, no.children=9) a3 - list(name=Paul, wife=Alic, no.children=5) write.table(a1, file = tt.csv, sep=',',row.names=FALSE,col.name=TRUE) write.table(a2, file=tt.csv, sep=',', append=TRUE, row.names=FALSE, col.names=FALSE) write.table(a3, file=tt.csv, sep=',', append=TRUE, row.names=FALSE, col.names=FALSE) fp=file(tt.csv,r) c=scan(file=fp, sep=',', what=list(c1=, c2=, c3=), flush=TRUE, nlines=1) d1=scan(file=fp, sep=',', what=list(name=, wife=, no.kids=0), flush=TRUE, nlines=1) d1 R output: --- $name [1] Fred $wife [1] Mary $no.kids [1] 3 - d2=scan(file=fp, sep=',', what=list(name=, wife=, no.kids=0), flush=TRUE, nlines=1) d2 R Output: $name [1] Tom $wife [1] Joy $no.kids [1] 9 -- My question is, how to manipulate the pointer of the file further? For example, what if I need the pointer to go back to the previous row? Best Wishes Yuchen Luo [[alternative HTML version deleted]] __ [EMAIL PROTECTED] 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. __ [EMAIL PROTECTED] 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.