[Rd] as.list(subclassed function) -> cannot coerce type 'closure' to vector of type 'list'
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Feb 7 22:08:41 CET 2011
This is because there is an as.list.function, but your classed object
does not inherit from 'function'.
However, I think coercing to a list is S-like, and in R we have
formals() and body(), and I think you want the former.
Seems this was a late 2008 change: maybe the author can tell us why it
was done?
On Mon, 7 Feb 2011, William Dunlap wrote:
> I was looking for all the glm-related 'family' functions
> in stats using the following predicate that returns TRUE
> for any function whose first argument is called "link".
> is.family <- function(object) is.function(object) &&
> identical(names(as.list(object))[1], "link")
>
> It threw an error when applied to SSfol
> > is.family(SSfol)
> Error in as.vector(x, "list") :
> cannot coerce type 'closure' to vector of type 'list'
> but works when I unclass SSfol
> > is.family(unclass(SSfol))
> [1] FALSE
>
> It looks like as.list fails on any function that is assigned
> a class:
> > as.list(function(x)x+1)
> $x
>
>
> [[2]]
> x + 1
>
> > as.list(structure(function(x)x+1, class="unrecognized class name"))
> Error in as.vector(x, "list") :
> cannot coerce type 'closure' to vector of type 'list'
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list