[R] No "number of days" format for 'difftime'?

Loris Bennett loris.bennett at fu-berlin.de
Mon Aug 8 14:12:47 CEST 2016

Loris Bennett <loris.bennett at fu-berlin.de> writes:

> Thanks for the link, John.  However, there is a hyphen missing.  It
> should be:
>   http://www.dummies.com/how-to/content/how-to-read-errors-and-warnings-in-r.html
> Appropriately, with the correct URL we find the too often forgotten
> pearl of wisdom:
>  "Chances are, you just typed something wrong there."
> I think I need this on my coffee cup.
> Cheers,
> Loris

Continuing the topic for my future self and others equally poorly versed
in The Art and Dark Science of Interpreting R Error Messages, if I have
the following in the file "my_data"

1094165      2016-07-24T09:40:02 13-23:03:28          1  COMPLETED 
1112076      2016-08-01T14:45:49 6-13:26:15          1  COMPLETED 

and do

> d <- read.table("my_data")
> colnames(d) <- c("jobid","start","elapsed","alloccpus","state")
> df <- transform(d,start = as.POSIXct(start,format="%Y-%m-%dT%H:%M:%S"),elapsed = as.difftime(elapsed,format="%d-%H:%M:%S"))

I get the following:

Error in as.difftime(elapsed, format = "%d-%H:%M:%S") : 
  'tim' is not character or numeric

Remembering that if something is not what you think it is, it is
probably a factor, I find that

> d <- read.table(data_file,stringsAsFactors=FALSE)

causes the error to go away.

So what's all this 'tim' business?  A quick squint at the source code of
datetime.R reveals the following line:

  if (!is.numeric(tim)) stop("'tim' is not character or numeric")

So the error message tells me something about the arbitrary name of the
variable 'tim', which could also have been 'tom', 'dick', or 'harriet',
but nothing about the value.

So follow Rolf Turner's fortune(350) advice, then look at the source
code, and then realise that you weren't being totally dopey in not
understanding the error message.


Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin         Email loris.bennett at fu-berlin.de

More information about the R-help mailing list