[Rd] Bug report for sealClass() in Core-maintained package "methods"
agower at bu.edu
Mon Jun 19 17:55:57 CEST 2017
I have found that I cannot use sealClass() without specifying the 'where' argument.
I have found this issue in R 3.2.3 and R 3.4.0.
> setClass("foo", slots=c(name="character", age="integer"))
Error in list2env(list(<environment>), NULL, <environment>) :
names(x) must be a character vector of the same length as x
> sealClass("foo", where=.GlobalEnv)
I found that this is because sealClass() includes the following line:
if (missing(where)) where <- findClass(Class, unique = "sealing the class", where = where)
Because findClass() always returns a list (even if argument 'unique' contains a character string), this assigns a list of length 1 to variable 'where'.
This then throws an error in the subsequent line
assignClassDef(Class, classDef, where)
For this reason, the abovementioned line should instead read:
if (missing(where)) where <- findClass(Class, unique = "sealing the class", where = where)[]
Thanks very much,
agower at bu.edu<mailto:agower at bu.edu>
[[alternative HTML version deleted]]
More information about the R-devel