[Rd] Object saved from 1.7.1, loaded in 1.8.0
Heywood, Giles
Giles.Heywood at CommerzbankIB.com
Tue Nov 4 09:30:37 MET 2003
I am having difficulty using in 1.8.0 an object created under 1.7.1. The
following is a 'minimal example' of the issue. First the part in 1.7.1:
> require("methods")
[1] TRUE
> setClass("foo",representation("vector",label="character"))
[1] "foo"
> x <- new("foo",1:2,label=LETTERS[1:2])
> save(x,file="f:/temp/test_gh.171.Rdata")
Then in 1.8.0:
> require("methods")
[1] TRUE
> setClass("foo",representation("vector",label="character"))
[1] "foo"
> load("f:/temp/test_gh.171.Rdata")
> new("foo",x,label=x at label)
Error in initialize(value, ...) : Initialize method returned an object of
class "foo" instead of the required class "foo"
> new("foo",x at .Data,label=x at label)
An object of class "foo"
[1] 1 2
Slot "label":
[1] "A" "B"
> y <- new("foo",1:2,label=LETTERS[1:2])
> new("foo",y,label=y at label)
An object of class "foo"
[1] 1 2
Slot "label":
[1] "A" "B"
> attributes(class(x))
NULL
> attributes(class(y))
$package
[1] ".GlobalEnv"
> attributes(class(x)) <- attributes(class(y))
> new("foo",y,label=y at label)
An object of class "foo"
[1] 1 2
Slot "label":
[1] "A" "B"
As far as I can see, the "class" attribute now has an attribute "package",
and the absence of this attribute in objects created under 1.7.1 causes the
problem. This lack of 'backward compatibility' has been flagged to me as a
bug in the package 'its' that I maintain on CRAN. I'm not sure it's a
bug... should I advise users to re-generate their stored objects using e.g.
new("foo",x at .Data,label=x at label)? Or is there something I am missing
altogether here?
TIA
Giles Heywood
OS: NT4
R.version
platform i386-pc-mingw32
arch i386
os mingw32
system i386, mingw32
status
major 1
minor 8.0
year 2003
month 10
day 08
language R
**********************************************************************
This is a commercial communication from Commerzbank AG.\ \ T...{{dropped}}
More information about the R-devel
mailing list