bug in by.data.frame, R-2.6.1 (PR#10506)
It transpires that package survey relies on the current behaviour (which is not new in 2.6.1: R 2.0.0 did it). The suggested fix is reasonable if 'data' was originally a data frame, but the default method promotes vectors to data frames, and the data frame method used to drop them back to vectors. I've backed the fix out of R-patched. I am not sure if the current undocumented behaviour on vectors is 100% desirable, but will amend by.default in R-devel to preserve it. Thomas: I think svymean() needs not to assume that 1-column data frames will be dropped.
On Mon, 10 Dec 2007, ligges at statistik.uni-dortmund.de wrote:
by() fails for 1-column matrices and dataframes:
X <- data.frame(a=1:10)
g <- gl(2,5)
by(X, g, colMeans)
Suggested fix:
--- by-old.R 2007-12-10 15:26:22.501086600 +0100
+++ by.R 2007-12-10 15:25:58.390477200 +0100
@@ -26,7 +26,7 @@
IND[[1]] <- INDICES
names(IND) <- deparse(substitute(INDICES))[1]
} else IND <- INDICES
- FUNx <- function(x) FUN(data[x,], ...)
+ FUNx <- function(x) FUN(data[x, , drop=FALSE], ...)
nd <- nrow(data)
ans <- eval(substitute(tapply(1:nd, IND, FUNx)), data)
attr(ans, "call") <- match.call()
_
platform i386-pc-mingw32
arch i386
os mingw32
system i386, mingw32
status
major 2
minor 6.1
year 2007
month 11
day 26
svn rev 43537
language R
version.string R version 2.6.1 (2007-11-26)
Uwe Ligges
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Brian D. Ripley, ripley at stats.ox.ac.uk 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