[Rd] Inconsistency with matrix indexing (PR#8214)
maechler@stat.math.ethz.ch
maechler at stat.math.ethz.ch
Wed Oct 19 14:08:39 CEST 2005
>>>>> "Duncan" == Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>> on Tue, 18 Oct 2005 09:50:59 -0400 writes:
Duncan> On 10/18/2005 9:32 AM, stefan.albrecht at allianz.com wrote:
>> Dear Duncan,
>>
>> you are right. In both R 2.2.0 and 2.1.1 you get the same result. What has
>> actually changed is the following:
>> In R 2.1.1
>>> mat[1, , drop = FALSE][1]
>> r1
>> 1
>>
>> While in R 2.2.0
>>> mat[1, , drop = FALSE][1]
>> [1] 1
Duncan> I don't agree with your suggestion. mat[1, , drop = FALSE]
Duncan> is a 1x3 matrix, with both row and column
Duncan> names. Indexing it by [1] says that you want to
Duncan> treat it as a vector, and give the first element.
Duncan> How could R know whether to keep the row or column
Duncan> name for that [1,1] element? What should it do with
Duncan> the expression
Duncan> mat[1,1 , drop = FALSE][1]
Duncan> ?
Duncan> If you are really concerned about the names, you should use matrix
Duncan> indexing in both places with drop = FALSE:
>> mat[1, , drop = FALSE][1,1,drop=FALSE]
Duncan> c1
Duncan> r1 1
Duncan> Duncan Murdoch
yes, definitely. There's no bug here, and there was rather a
bug in previous behavior.
Just a simpler example {"for posteriority"}:
> (M <- cbind(a=0:1, b=c(A=2, B=3)))
a b
A 0 2
B 1 3
> M[1,2, drop=FALSE]
b
A 2
> M[1,2]
[1] 2
> M[2] ### treat M as vector -> lose names
[1] 1
> M[2:3]
[1] 1 2
>
More information about the R-devel
mailing list