Skip to content

documentation for 'open': some clarification?

5 messages · Na Li, Brian Ripley, Gabor Grothendieck +2 more

#
I'm been doing more and more of file text parsing inside R instead of
coping with Perl.  For that, I need open a file and read it line-by-line.
I found the documentation for 'open' isn't very clear.

Right now it has

,----[ *help(R)[open]* ]
|  'open' opens a connection.  In general functions using connections
|  will open them if they are not open, but then close them again, so
|  to leave a connection open call 'open' explicitly.
`----

It seems that one has to call 'open' to open a live connection that can be
parsed line by line (using readLines() or scan() to read).  But open()
cannot be directly applied to a file name.

In fact, one only needs supply the 'open' argument in file() with
something other than the empty string,

,----
| > con <- file ("S200.dat")
| > isOpen (con)
| [1] FALSE
| > con <- file ("S200.dat", open = "r")
| > isOpen (con)
| [1] TRUE
`----

It is not clear to me how 'open()' is supposed to be used.  It took me a
while to figure this out and I thought it might be worthwhile to add one
sentence or two to make it more clear in the doc.

Cheers,

Michael
#
On Thu, 14 Apr 2005, Na Li wrote:

            
You appears to have missed almost all the documentation.
Not surprising, as it is documented as

      open(con, ...)
      ## S3 method for class 'connection':
      open(con, open = "r", blocking = TRUE, ...)

      con: a connection.
            ^^^^^^^^^^^
Or use 'open(con)', but you are asking about the usage of something that 
you never need to use, as should have been clear from all the examples, 
e.g. those in ?readBin (which is in the SeeAlso) that get on fine without 
it.
Have you figured it out?
Help pages are not tutorials: there is a reference on the help page, and 
an article in R-news.  (I have raised several times the idea of a 
technical papers section with such articles, but other do not share my 
enthusiasm.)
#
Here is an example:

# read and print first 10 lines one by one
# the next two lines could be collapsed into con <- file("myfile", r)
con <- file("myfile") 
open(con) 
for(i in 1:10) print(readLines(con, n=1))
close(con) 

Also its possible that you may not need open.  For example,
one can just read it all in at once like this:

mylines <- readLines("myfile")
# and now mylines[1] is the first line, etc.  

# or
my.numbers <- scan("myfile")

# or
my.table <- read.table("myfile")
On 4/14/05, Na Li <nali@umn.edu> wrote:
#
On Thu, 14 Apr 2005 19:47:55 +0100 (BST)
Prof Brian Ripley <ripley@stats.ox.ac.uk> wrote:

            
I for one want to support the idea of adding such technical papers to
R-news.

detlef
#
I humbly suggest the Journal of Statistical Software (www.jstatsoft.org)
which gives you peer-review, ISSN, directory of open access journals,
Nelson Beebe's BibTeX repository, CODEN, and pretty soon CIS and
official ASA status.

-- Jan
On Apr 14, 2005, at 13:42 , Detlef Steuer wrote:

            
===
Jan de Leeuw; Distinguished Professor and Chair, UCLA Department of  
Statistics;
Editor: Journal of Multivariate Analysis, Journal of Statistical  
Software
US mail: 8130 Math Sciences Bldg, Box 951554, Los Angeles, CA 90095-1554
phone (310)-825-9550;  fax (310)-206-5658;  email: deleeuw@stat.ucla.edu
.mac: jdeleeuw ++++++  aim: deleeuwjan ++++++ skype: j_deleeuw
homepages: http://gifi.stat.ucla.edu ++++++ http://www.cuddyvalley.org
   
------------------------------------------------------------------------ 
-------------------------
           No matter where you go, there you are. --- Buckaroo Banzai
                    http://gifi.stat.ucla.edu/sounds/nomatter.au