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.

Reply via email to