[Rd] Bug in all.equal() or in the plm package
Duncan Murdoch
murdoch at stats.uwo.ca
Mon Nov 9 12:24:05 CET 2009
Arne Henningsen wrote:
> Hi!
>
> I noticed that there is a (minor) bug either the command all.equal()
> or in the "plm" package. I demonstrate this using an example taken
> from the documentation of plm():
>
I'm not sure this is a bug, but I'd call it at least a design flaw. The
problem is that the length.Formula method in the Formula package (which
plm depends on) returns a vector of length 2. Now there's nothing in R
that requires length() to return a scalar, but all.equal assumes it
does, and I'd guess there are lots of other places this assumption is made.
Duncan Murdoch
> ======================================
> R> data("Produc", package="plm")
> R> zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp,
> + data=Produc, index=c("state","year"))
> R> all.equal(zz,zz)
> [1] TRUE
> Warning message:
> In if (length(target) != length(current)) return(paste("target,
> current differ in having response: ", :
> the condition has length > 1 and only the first element will be used
>
>> all.equal(zz$formula,zz$formula)
>>
> [1] TRUE
> Warning message:
> In if (length(target) != length(current)) return(paste("target,
> current differ in having response: ", :
> the condition has length > 1 and only the first element will be used
>
>> class(zz$formula)
>>
> [1] "pFormula" "Formula" "formula"
> ======================================
>
> The last commands show that the warning message comes from comparing
> the elements "formula", which are of the class "pFormula" (inheriting
> from "Formula" and "formula"). It would be great if this issue could
> be fixed in the future.
>
> Thanks a lot,
> Arne
>
>
More information about the R-devel
mailing list