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. Thanks, -Kevin [[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.