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 <

[hidden email]> 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 <

[hidden email]> 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

> >

[hidden email]
> >

> > 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]]

> >

> > ______________________________________________

> >

[hidden email] 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:

[hidden email] Priv:

[hidden email]
>

> ______________________________________________

>

[hidden email] 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]]

______________________________________________

[hidden email] mailing list -- To UNSUBSCRIBE and more, see

https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide

http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.