On 20/02/2012 16:03, Gavin Simpson wrote:
Dear list,

Fully according to the documented behaviour, I was bitten by apply()
simplifying results to vectors or arrays when the lengths of the
individual objects returns by FUN are the same (over simplification).

sapply() has argument simplify with default TRUE to control whether it
attempts to simplify the returned objects or not.

I do find it a little annoying that one is not able to force apply into
one behaviour or the other.

I think it is different. sapply (and mapply) work on a list and return a list result unless simplified. apply() works on an array and returns an array result (dropping dims to a vector) unless that is not possible.

We don't have an example, but you seem to want a list result from apply(). If that _is_ what you want, why not use lapply()? E.g.

lapply(split(m, row(m)), max)

is the list equivalent of apply(m, 1, max) . Also, apply() is just sugar around a for() loop, and a loop may do what you want.


Would the be merit in apply() also having a similar argument to control
whether simplification occurs or not, say adding `simplify = TRUE` after
`...`? If there was I'd be happy to provide a first stab and contribute
updated documentation.

All the best,

Gavin


--
Brian D. Ripley,                  [email protected]
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

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to