"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