It returns a list with athe class attribut set to "by", just use:

x <- by(.....)
unclass(x)


Uwe Ligges


On 14.09.2010 00:11, Seb wrote:
Hi,

I noticed that by() returns an object of class 'by', regardless of what
its argument 'simplify' is.  ?by says that it always returns a list if
simplify=FALSE, yet by.data.frame shows:

---<--------------------cut here---------------start------------------->---
function (data, INDICES, FUN, ..., simplify = TRUE)
{
     if (!is.list(INDICES)) {
         IND<- vector("list", 1L)
         IND[[1L]]<- INDICES
         names(IND)<- deparse(substitute(INDICES))[1L]
     }
     else IND<- INDICES
     FUNx<- function(x) FUN(data[x, , drop = FALSE], ...)
     nd<- nrow(data)
     ans<- eval(substitute(tapply(1L:nd, IND, FUNx, simplify = simplify)),
         data)
     attr(ans, "call")<- match.call()
     class(ans)<- "by"
     ans
}
<environment: namespace:base>
---<--------------------cut here---------------end--------------------->---

One could force a list by wrapping it around an lapply(by.object, "["),
but this is not possible if the object contains S4 objects.  How does
one force a list in those cases?


Cheers,


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to