P.S. The way the logical matrix is constructed is NOT general purpose. Quoting myself quoting Bert, > > Actually, it works, as long as the logical index matrix has the same > dimensions as the data frame. > > zmat <- matrix(1:12,nr=4) > zdf <- data.frame(zmat) > > # Numeric index matrix. > ix <- cbind(1:2,2:3) > # Logical index matrix. > ix2 <- row(zdf) == ix[, 1] & col(zdf) == ix[, 2] >
Here the number of rows in zdf is a multiple of the vectors ix[, 1] and ix[ , 2] lengths. The recycling rules makes it work. But if the numeric index matrix has, say, 3 rows, another way of constructing the logical one would be needed. jx <- cbind(1:3, c(2:3, 3)) row(zdf) == jx[, 1] & col(zdf) == jx[, 2] [,1] [,2] [,3] [1,] FALSE FALSE FALSE [2,] FALSE FALSE FALSE [3,] FALSE FALSE FALSE [4,] FALSE FALSE FALSE (Anyway, I don't believe that was the point.) R.B. -- View this message in context: http://r.789695.n4.nabble.com/Data-frame-vs-matrix-quirk-Hinky-error-message-tp4601254p4601558.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.