Skip to content

How to not to terminate read.table if the input file is empty?

11 messages · Henrik Bengtsson, Dylan Beaudette, (Ted Harding) +4 more

#
read.table terminates the program if the input file is empty. Is there
way to let the program continue and return me a NULL instead of
terminating the program?

$ Rscript read_empty.R
Error in read.table("empty_data.txt") : no lines available in input
Execution halted
$ cat read_empty.R
read.table("empty_data.txt")
$ cat empty_data.txt; echo EOF
EOF
#
Please give reproducible example, more information on your
troubleshooting and sessionInfo().  Cannot reproduce:
size isdir mode               mtime               ctime
empty.txt    0 FALSE  666 2010-01-01 12:50:55 2010-01-01 12:45:34
                        atime exe
empty.txt 2010-01-01 12:45:34  no
Error in read.table(pathname) : no lines available in input
R version 2.10.1 Patched (2009-12-24 r50837)
i386-pc-mingw32

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

/Henrik
On Fri, Jan 1, 2010 at 12:41 PM, Peng Yu <pengyu.ut at gmail.com> wrote:
#
?try
On Fri, Jan 1, 2010 at 12:41 PM, Peng Yu <pengyu.ut at gmail.com> wrote:
#
On 01-Jan-10 20:41:52, Peng Yu wrote:
If I understand the point of your query correctly, the following,
from "?read.table", would be relevant:

Value:
  A data frame (?data.frame?) containing a representation of the
  data in the file.

  Empty input is an error unless "col.names" is specified, when a
  0-row data frame is returned: similarly giving just a header line
  if "header = TRUE" results in a 0-row data frame.  Note that in
  either case the columns will logical unless ?colClasses? was
  supplied.

The result would not be NULL, but can be tested for zero rows.

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 01-Jan-10                                       Time: 20:55:35
------------------------------ XFMail ------------------------------
#
Please reread my original post. You run it in a shell. I run it in a script.
On Fri, Jan 1, 2010 at 2:53 PM, Henrik Bengtsson <hb at stat.berkeley.edu> wrote:
#
On Fri, Jan 1, 2010 at 2:54 PM, Dylan Beaudette
<dylan.beaudette at gmail.com> wrote:
This works. Thank you!
Error in read.table("empty_data.txt") : no lines available in input
+   f=NULL
+ }
NULL
V1     V2     V3     V4
1 name title1 title2 title3
2 row1   10.1   20.1   30.1
3 row2   12.1   22.1   32.1
#
On Fri, Jan 1, 2010 at 3:03 PM, jim holtman <jholtman at gmail.com> wrote:
For the case of using try, it is better to use inherits() rather than
class(), or it doesn't matter?
#
On Fri, Jan 1, 2010 at 3:19 PM, Peng Yu <pengyu.ut at gmail.com> wrote:
One more question. Is there a way to suppress the output to the screen
'Error in read.table("empty_data.txt") : no lines available in input'?
#
On Jan 1, 2010, at 4:42 PM, Peng Yu wrote:

            
As always, you should try reading the full help page. I know it must  
seem onerous but in this case (re-?)read all of the help page for "try".