On 10/18/2005 9:32 AM, [EMAIL PROTECTED] 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
I don't agree with your suggestion. mat[1, , drop = FALSE] is a 1x3 matrix, with both row and column names. Indexing it by [1] says that you want to treat it as a vector, and give the first element. How could R know whether to keep the row or column name for that [1,1] element? What should it do with the expression mat[1,1 , drop = FALSE][1] ? If you are really concerned about the names, you should use matrix indexing in both places with drop = FALSE: > mat[1, , drop = FALSE][1,1,drop=FALSE] c1 r1 1 Duncan Murdoch > > In both cases >> mat[1, , drop = FALSE] > c1 c2 c3 > r1 1 4 7 > > I would strongly prefer to retain the row index r1 above. > Of course, you could argue that mat[1, , drop = FALSE][1] relates to the > column name c1. However, I think the lower dimension is a vector and this > typically a column with row names. Most likely, a wiser and more concise > interpretation than the mine is necessary, but the problem of dropping and > loosing information is quite evident in any case. > > Still, I believe, my suggestion below is justified. Things like this > happen quite often to me and it regularly takes time and effort to rectify > the problem. > Retaining the matrix features in sames could really be an advantage and > avoid many if's and other workarounds. > > Many thanks and best regards, > Stefan > > > > Duncan Murdoch <[EMAIL PROTECTED]> > 2005-10-18 14:33 > > An > [EMAIL PROTECTED] > Kopie > r-devel@stat.math.ethz.ch, [EMAIL PROTECTED] > Thema > Re: [Rd] Inconsistency with matrix indexing (PR#8214) > > > > > > > [EMAIL PROTECTED] wrote: >> Full_Name: Stefan Albrecht >> Version: 2.2.0 >> OS: Windows XP >> Submission from: (NULL) (194.127.2.74) >> >> >> Dear all, >> >> in the new R 2.2.0, the matrix indexing has been changed. > > I just tried your code in R 2.0.1 and 2.1.1, and got the same output as > you did. Which version are you comparing to? > > Duncan Murdoch > > > In my opinion, this >> leads to an inconsistency when indexing one-row matrices. >> Take >> >>>(mat <- matrix(1:9, nrow = 3, dimnames = list(paste("r", 1:3, sep = ""), >> >> paste("c", 1:3, sep = "")))) >> c1 c2 c3 >> r1 1 4 7 >> r2 2 5 8 >> r3 3 6 9 >> >> Now taking the first row of the first-row of mat preserves the column > names >> >>>mat[1, , drop = FALSE][1, ] >> >> c1 c2 c3 >> 1 4 7 >> >> This is not true for the first column of the first-row of mat >> >>>mat[1, , drop = FALSE][, 1] >> >> [1] 1 >> >> However, for the first column of the first two rows of mat the row names > are >> retained >> >>>mat[1:2, , drop = FALSE][, 1] >> >> r1 r2 >> 1 2 >> >> This feature can lead to problems when indexing matrixes of different > row >> numbers, since the row names are not preserved in all cases. >> >> I suggest to preseve the row names also for >> >>>mat[1, , drop = FALSE][, 1] >> >> >> Would it be possible to implement this feature? Many thanks. >> >> With best regards, >> >> Stefan Albrecht >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel