[R] ?bug? strange factors produced by chron

Petr Pikal petr.pikal at precheza.cz
Mon Feb 13 12:31:41 CET 2006


Thank you very much.

On 13 Feb 2006 at 10:54, Prof Brian Ripley wrote:

Date sent:      	Mon, 13 Feb 2006 10:54:21 +0000 (GMT)
From:           	Prof Brian Ripley <ripley at stats.ox.ac.uk>
To:             	Petr Pikal <petr.pikal at precheza.cz>
Copies to:      	r-help at stat.math.ethz.ch
Subject:        	Re: [R] ?bug? strange factors produced by chron

> 1) The obvious test is via is.factor(), and you have not used that.

I used it with TRUE result but did not use in my post (mea culpa)
> is.factor(kvartaly)
[1] TRUE

> 2) Your example works for me, so what versions of R and chron is this?

Package: chron
Version: 2.3-1
R 2.2.1 and W2000

but problem is probably in interaction (see below)
> 
> 3) Here's my guess. split is using the C-level test isFactor.  That
> tests that the factor is of type integer, so please try
> 
> >  typeof(kvartaly)

 > typeof(kvartaly)
 [1] "double"
 
Problem is probably not in chron but in interaction, which silently 
transfers factor type to double

> typeof(factor(letters[1:2]))
[1] "integer"

> typeof(interaction(factor(letters[1:2]), factor(letters[3:4])))
[1] "double"
> 

> 
> I suspect you will get "double" and not "integer", and if so you can
> fix this by
> 
> storage.mode(kvartaly) <- "integer"

Thanks, it works.

> 
> So here's an example which will fail
> 
> > fac2 <- rep(c(1,2,3), each=5)
> > attr(fac2, "levels") <- as.character(1:3)
> > oldClass(fac2) <- "factor"
> > is.factor(fac2)
> [1] TRUE
> > split(rnorm(15), fac2)
> Error in split(x, f) : second argument must be a factor
> 
> I think it is an error that the R-level and C-level tests for
> is.factor() are different.

<snip>

> > vec1<-as.Date(Sys.time())
> 
> Why not Sys.Date() ?

I remembered only Sys.time when writing my mail.

> 

<snip>

Thank you again.

Best regards.
PetrPetr Pikal
petr.pikal at precheza.cz




More information about the R-help mailing list