Hi David, Yes, it is - although the SO question was more directed at figuring out why sapply seemed slower, the question to R-help is more nuanced in "is this coercion really necessary for data.frames?", and I figured it might take some more knowledge of R internals / the difference between lists and data.frames to answer that.
Ie, might we be introducing some weird subtle bug(s) if we called the *apply functions on an un-coerced data.frame? -Kevin On Sat, Jan 5, 2013 at 1:18 PM, David Winsemius <dwinsem...@comcast.net>wrote: > > On Jan 5, 2013, at 11:38 AM, Kevin Ushey wrote: > > Hey guys, >> >> I noticed something curious in the lapply call. I'll copy+paste the >> function call here because it's short enough: >> >> lapply <- function (X, FUN, ...) >> { >> FUN <- match.fun(FUN) >> if (!is.vector(X) || is.object(X)) >> X <- as.list(X) >> .Internal(lapply(X, FUN)) >> } >> >> Notice that lapply coerces X to a list if the !is.vector || is.object(X) >> check passes. >> >> Curiously, data.frames fail the test (is.vector(data.frame()) returns >> FALSE); but it seems that coercion of a data.frame >> to a list would be unnecessary for the *apply family of functions. >> >> Is there a reason why we must coerce data.frames to list for these >> functions? I thought data.frames were essentially just 'structured lists'? >> >> I ask because it is generally quite slow coercing a (large) data.frame to >> a >> list, and it seems like this could be avoided for data.frames. >> > > Is this related to this SO question that uses the microbenchmark function > to illustrate the costs of the (possibly) superfluous coercion? > > http://stackoverflow.com/**questions/14169818/why-is-** > sapply-relatively-slow-when-**querying-attributes-on-** > variables-in-a-data-fr<http://stackoverflow.com/questions/14169818/why-is-sapply-relatively-slow-when-querying-attributes-on-variables-in-a-data-fr> > > -- > > David Winsemius, MD > Alameda, CA, USA > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.