Skip to content
Prev 54691 / 63424 Next

as.list method for by Objects

I agree that it makes sense to expect as.list() to perform
a "strict coercion" i.e. to return an object of class "list",
*even* on a list derivative. That's what as( , "list") does
by default:

   # on a data.frame object
   as(data.frame(), "list")  # object of class "list"
                             # (but strangely it drops the names)

   # on a by object
   x <- by(warpbreaks[, 1:2], warpbreaks[,"tension"], summary)
   as(x, "list")  # object of class "list"

More generally speaking as() is expected to perform "strict
coercion" by default, unless called with 'strict=FALSE'.

That's also what as.list() does on a data.frame:

   as.list(data.frame())  # object of class "list"

FWIW as.numeric() also performs "strict coercion" on an integer
vector:

   as.numeric(1:3)  # object of class "numeric"

So an as.list.env method that does the same as as(x, "list")
would bring a small touch of consistency in an otherwise
quite inconsistent world of coercion methods(*).

H.

(*) as(data.frame(), "list", strict=FALSE) doesn't do what you'd
     expect (just one of many examples)
On 01/29/2018 05:00 PM, Dario Strbenac wrote: