Re: [<-. It is perhaps worth noting that the OP seems "misguided" in another sense. His complaint seems to rest on the assumption that because matrices and data frames both have a row/column structure, certain operations on them should be similar. I disagree. In fact, data frames and matrices are very different structures with very different semantics and wholly different purposes. Their "similarity" is superficial. First and foremost, (numeric) matrices are numerical objects, the basic building blocks for linear algebra with a whole devoted set of algebraic functionality for them (see also: BLAS) ; while data frames are essentially data storage/manipulation structures, internal data bases for R. As a result, imo, there is good reason that [<-. should *not* behave with matrices as it does with data frames: when doing complex matrix calculations, returning an error message when indices go out of range seems much more desirable than silently changing dimensions. Indeed, I think one might make a better argument for doing that for data frames also, but, as it is both relativey innocuous and convenient to add columns in that context -- the data frame method is just a wrapper for data.frame() as the man page says -- it's not really an issue (and certainly shouldn't be altered now).
Perhaps a moral: one should be very wary of assuming that behavior that you think is "natural" and "desirable" would be assumed to be so by others. Especially for long used and extensively exercised core functionality. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Sun, Nov 24, 2019 at 6:47 AM peter dalgaard <pda...@gmail.com> wrote: > The subject is misguided. It is not a problem to assign to a subset of > columns. > > The issue is that the assignment operation does not want to _expand_ the > matrix automatically upon seeing an out-of-bounds index. E.g.: > > > M <- matrix(0,2,2) > > M[,3]<-1 > Error in `[<-`(`*tmp*`, , 3, value = 1) : subscript out of bounds > > M[,2]<-1 > > M > [,1] [,2] > [1,] 0 1 > [2,] 0 1 > > You can, however, do things like this: > > > M <- M[,c(1,2,2)] > > M[,3]<-3 > > M > [,1] [,2] [,3] > [1,] 0 1 3 > [2,] 0 1 3 > > -pd > > > On 23 Nov 2019, at 17:58 , David Disabato <ddisa...@gmail.com> wrote: > > > > Whenever going from working with a data.frame to a matrix, I get annoyed > > that I cannot assign and subset at the same time with matrices - like I > can > > with data.frames. > > > > For example, if I want to add a new column to a data.frame, I can do > > something like `myDataFrame[, "newColumn"] <- NA`. > > > > However, with a matrix, this syntax does not work and I have to use a > call > > to `cbind` and create a new object. For example, `mymatrix2 <- > > cbind(mymatrix, "newColumn" = NA)`. > > > > Is there a programming reason that base R does not have a matrix method > for > > `[<-` or is it something that arguably should be added? > > > > -- > > David J. Disabato, Ph.D. > > Postdoctoral Research Scholar > > Kent State University > > ddisa...@gmail.com > > > > Email is not a secure form of communication as information and > > confidentiality cannot be guaranteed. Information provided in an email is > > not intended to be a professional service. In the case of a crisis or > > emergency situation, call 911. > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School > Solbjerg Plads 3, 2000 Frederiksberg, Denmark > Phone: (+45)38153501 > Office: A 4.23 > Email: pd....@cbs.dk Priv: pda...@gmail.com > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.