Re: [R] Initializing vector and matrices

2024-03-02 Thread Jeff Newmiller via R-help
To be fair, these replies no longer include the original question, which was 
IMO really quite clear (if misguided), and was actually targeted at 
understanding pre-allocation for better performance. Richard's suggestion to 
store the along-the-way constructed vectors in a list and examine the lengths 
of the elements of that list after it is completely constructed if it is really 
desired to force vectors of varying lengths into a matrix seems appropriate. 
The possibly-misguided part is in the thought that vectors of different lengths 
belong in a matrix at all... leaving them in a list seems more likely to be 
appropriate.

OP: Avoid mis-using NA to "fill out" the end of uniform-length vectors. Each 
index position in a vector should represent some information... if you are 
throwing NAs or zeros in willy-nilly then you are not taking care to assign 
meaning to those positions, and likely wasting memory and time doing so. If you 
were taking such care, then any appropriate NAs would already be present in the 
vectors before you put them into the matrix, and the original question would 
not have crossed OPs mind because the vectors world already be of the same 
length. NA means that information for a specific position is "unknown", not 
"space filler".

Now if OP wants better guidance on restructuring their analysis, then certainly 
sharing those details would help the discussion move away from the original 
misguided question... but that would be another thread to answer the question 
that should have been asked.

On March 2, 2024 9:53:41 AM PST, Bert Gunter  wrote:
>"It would be really really helpful to have a clearer idea of what you
>are trying to do."
>
>Amen!
>
>But in R, "constructing" objects by extending them piece by piece is
>generally very inefficient (e.g.
>https://r-craft.org/growing-objects-and-loop-memory-pre-allocation/),
>although sometimes?/often? unavoidable (hence the relevance of your
>comment above). R generally prefers to take a "whole object" point of
>view ( see R books by Chambers, et. al.) and provides code for basic
>operations like vector/matrix, etc. construction to do so. When this
>is not possible, I suspect "optimal" efficient strategies for
>allocating space to build objects gets you into the weeds of how R
>works.
>
>Cheers,
>Bert
>
>
>
>
>On Sat, Mar 2, 2024 at 1:02 AM Richard O'Keefe  wrote:
>>
>> The matrix equivalent of
>>   x <- ...
>>   v <- ...
>>   x[length(x)+1] <- v
>> is
>>   m <- ...
>>   r <- ...
>>   m <- rbind(m, r)
>> or
>>   m <- ...
>>   k <- ...
>>   m <- cbind(m, c)
>>
>> A vector or matrix so constructed never has "holes" in it.
>> It's better to think of CONSTRUCTING vectors and matrices rather than
>> INITIALISING them,
>> because always being fully defined is important.
>>
>> It would be really really helpful to have a clearer idea of what you
>> are trying to do.
>>
>> On Fri, 1 Mar 2024 at 03:31, Ebert,Timothy Aaron  wrote:
>> >
>> > You could declare a matrix much larger than you intend to use. This works 
>> > with a few megabytes of data. It is not very efficient, so scaling up may 
>> > become a problem.
>> > m22 <- matrix(NA, 1:60, ncol=6)
>> >
>> > It does not work to add a new column to the matrix, as in you get an error 
>> > if you try m22[ , 7] but convert to data frame and add a column
>> >
>> > m23 <- data.frame(m22)
>> > m23$x7 <- 12
>> >
>> > The only penalty that I know of to having unused space in a matrix is the 
>> > amount of memory it takes. One side effect is that your program may have a 
>> > mistake that you would normally catch with a subscript out of bounds error 
>> > but with the extra space it now runs without errors.
>> >
>> > Tim
>> >
>> >
>> >
>> > -Original Message-
>> > From: R-help  On Behalf Of Richard O'Keefe
>> > Sent: Thursday, February 29, 2024 5:29 AM
>> > To: Steven Yen 
>> > Cc: R-help Mailing List 
>> > Subject: Re: [R] Initializing vector and matrices
>> >
>> > [External Email]
>> >
>> > x <- numeric(0)
>> > for (...) {
>> > x[length(x)+1] <- ...
>> > }
>> > works.
>> > You can build a matrix by building a vector one element at a time this 
>> > way, and then reshaping it at the end.  That only works if you don't need 
>> > it to be a matrix at all times.
>> > Another approach is to build a list of rows.  It's not 

Re: [R] Initializing vector and matrices

2024-03-02 Thread Bert Gunter
"It would be really really helpful to have a clearer idea of what you
are trying to do."

Amen!

But in R, "constructing" objects by extending them piece by piece is
generally very inefficient (e.g.
https://r-craft.org/growing-objects-and-loop-memory-pre-allocation/),
although sometimes?/often? unavoidable (hence the relevance of your
comment above). R generally prefers to take a "whole object" point of
view ( see R books by Chambers, et. al.) and provides code for basic
operations like vector/matrix, etc. construction to do so. When this
is not possible, I suspect "optimal" efficient strategies for
allocating space to build objects gets you into the weeds of how R
works.

Cheers,
Bert




On Sat, Mar 2, 2024 at 1:02 AM Richard O'Keefe  wrote:
>
> The matrix equivalent of
>   x <- ...
>   v <- ...
>   x[length(x)+1] <- v
> is
>   m <- ...
>   r <- ...
>   m <- rbind(m, r)
> or
>   m <- ...
>   k <- ...
>   m <- cbind(m, c)
>
> A vector or matrix so constructed never has "holes" in it.
> It's better to think of CONSTRUCTING vectors and matrices rather than
> INITIALISING them,
> because always being fully defined is important.
>
> It would be really really helpful to have a clearer idea of what you
> are trying to do.
>
> On Fri, 1 Mar 2024 at 03:31, Ebert,Timothy Aaron  wrote:
> >
> > You could declare a matrix much larger than you intend to use. This works 
> > with a few megabytes of data. It is not very efficient, so scaling up may 
> > become a problem.
> > m22 <- matrix(NA, 1:60, ncol=6)
> >
> > It does not work to add a new column to the matrix, as in you get an error 
> > if you try m22[ , 7] but convert to data frame and add a column
> >
> > m23 <- data.frame(m22)
> > m23$x7 <- 12
> >
> > The only penalty that I know of to having unused space in a matrix is the 
> > amount of memory it takes. One side effect is that your program may have a 
> > mistake that you would normally catch with a subscript out of bounds error 
> > but with the extra space it now runs without errors.
> >
> > Tim
> >
> >
> >
> > -Original Message-
> > From: R-help  On Behalf Of Richard O'Keefe
> > Sent: Thursday, February 29, 2024 5:29 AM
> > To: Steven Yen 
> > Cc: R-help Mailing List 
> > Subject: Re: [R] Initializing vector and matrices
> >
> > [External Email]
> >
> > x <- numeric(0)
> > for (...) {
> > x[length(x)+1] <- ...
> > }
> > works.
> > You can build a matrix by building a vector one element at a time this way, 
> > and then reshaping it at the end.  That only works if you don't need it to 
> > be a matrix at all times.
> > Another approach is to build a list of rows.  It's not a matrix, but a list 
> > of rows can be a *ragged* matrix with rows of varying length.
> >
> > On Wed, 28 Feb 2024 at 21:57, Steven Yen  wrote:
> > >
> > > Is there as way to initialize a vector (matrix) with an unknown length
> > > (dimension)? NULL does not seem to work. The lines below work with a
> > > vector of length 4 and a matrix of 4 x 4. What if I do not know
> > > initially the length/dimension of the vector/matrix?
> > >
> > > All I want is to add up (accumulate)  the vector and matrix as I go
> > > through the loop.
> > >
> > > Or, are there other ways to accumulate such vectors and matrices?
> > >
> > >  > x<-rep(0,4)  # this works but I like to leave the length open  >
> > > for (i in 1:3){
> > > +  x1<-1:4
> > > +  x<-x+x1
> > > + }
> > >  > x
> > > [1]  3  6  9 12
> > >
> > >  > y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to
> > > leave the dimension open
> > >   [,1] [,2] [,3] [,4]
> > > [1,]0000
> > > [2,]0000
> > > [3,]0000
> > > [4,]0000
> > >  > for (i in 1:3){
> > > +   y1<-matrix(17:32, nrow = 4, ncol = 4)
> > > +   y<-y+y1
> > > + }
> > >  > y
> > >   [,1] [,2] [,3] [,4]
> > > [1,]   51   63   75   87
> > > [2,]   54   66   78   90
> > > [3,]   57   69   81   93
> > > [4,]   60   72   84   96
> > >  >
> > >
> > > __
> > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > https://stat/
> > >

Re: [R] Initializing vector and matrices

2024-03-02 Thread Richard O'Keefe
The matrix equivalent of
  x <- ...
  v <- ...
  x[length(x)+1] <- v
is
  m <- ...
  r <- ...
  m <- rbind(m, r)
or
  m <- ...
  k <- ...
  m <- cbind(m, c)

A vector or matrix so constructed never has "holes" in it.
It's better to think of CONSTRUCTING vectors and matrices rather than
INITIALISING them,
because always being fully defined is important.

It would be really really helpful to have a clearer idea of what you
are trying to do.

On Fri, 1 Mar 2024 at 03:31, Ebert,Timothy Aaron  wrote:
>
> You could declare a matrix much larger than you intend to use. This works 
> with a few megabytes of data. It is not very efficient, so scaling up may 
> become a problem.
> m22 <- matrix(NA, 1:60, ncol=6)
>
> It does not work to add a new column to the matrix, as in you get an error if 
> you try m22[ , 7] but convert to data frame and add a column
>
> m23 <- data.frame(m22)
> m23$x7 <- 12
>
> The only penalty that I know of to having unused space in a matrix is the 
> amount of memory it takes. One side effect is that your program may have a 
> mistake that you would normally catch with a subscript out of bounds error 
> but with the extra space it now runs without errors.
>
> Tim
>
>
>
> -Original Message-
> From: R-help  On Behalf Of Richard O'Keefe
> Sent: Thursday, February 29, 2024 5:29 AM
> To: Steven Yen 
> Cc: R-help Mailing List 
> Subject: Re: [R] Initializing vector and matrices
>
> [External Email]
>
> x <- numeric(0)
> for (...) {
> x[length(x)+1] <- ...
> }
> works.
> You can build a matrix by building a vector one element at a time this way, 
> and then reshaping it at the end.  That only works if you don't need it to be 
> a matrix at all times.
> Another approach is to build a list of rows.  It's not a matrix, but a list 
> of rows can be a *ragged* matrix with rows of varying length.
>
> On Wed, 28 Feb 2024 at 21:57, Steven Yen  wrote:
> >
> > Is there as way to initialize a vector (matrix) with an unknown length
> > (dimension)? NULL does not seem to work. The lines below work with a
> > vector of length 4 and a matrix of 4 x 4. What if I do not know
> > initially the length/dimension of the vector/matrix?
> >
> > All I want is to add up (accumulate)  the vector and matrix as I go
> > through the loop.
> >
> > Or, are there other ways to accumulate such vectors and matrices?
> >
> >  > x<-rep(0,4)  # this works but I like to leave the length open  >
> > for (i in 1:3){
> > +  x1<-1:4
> > +  x<-x+x1
> > + }
> >  > x
> > [1]  3  6  9 12
> >
> >  > y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to
> > leave the dimension open
> >   [,1] [,2] [,3] [,4]
> > [1,]0000
> > [2,]0000
> > [3,]0000
> > [4,]0000
> >  > for (i in 1:3){
> > +   y1<-matrix(17:32, nrow = 4, ncol = 4)
> > +   y<-y+y1
> > + }
> >  > y
> >   [,1] [,2] [,3] [,4]
> > [1,]   51   63   75   87
> > [2,]   54   66   78   90
> > [3,]   57   69   81   93
> > [4,]   60   72   84   96
> >  >
> >
> > __
> > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat/
> > .ethz.ch%2Fmailman%2Flistinfo%2Fr-help=05%7C02%7Ctebert%40ufl.edu
> > %7Cdbccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84
> > %7C0%7C0%7C638447993707432549%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
> > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=
> > PtWjcDOnwO7PArVOSdgYbpz8ksjDPK%2Bn9ySyhwQC0gE%3D=0
> > PLEASE do read the posting guide
> > http://www.r/
> > -project.org%2Fposting-guide.html=05%7C02%7Ctebert%40ufl.edu%7Cdb
> > ccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84%7C0%
> > 7C0%7C638447993707438911%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
> > CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=Igb16
> > CBYgG21HLEDH4I4gfjjFBa3KjDFK8yEZUmBo8s%3D=0
> > and provide commented, minimal, self-contained, reproducible code.
>
> __
> 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.

__
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.


Re: [R] Initializing vector and matrices

2024-02-29 Thread Steven Yen
Thanks to all. Great ideas. I found Eik Vettorazzi's suggesstion easy to 
implrment:


ebarm<-vbarm<-NULL
...

if (is.null(ebarm)) ebarm<-ame.00$ei/k else ebarm<-ebarm+ame.00$ei/k
if (is.null(vbarm)) vbarm<-ame.00$vi/k else vbarm<-vbarm+ame.00$vi/k
...

Steven Yen

On 2/29/2024 10:31 PM, Ebert,Timothy Aaron wrote:


You could declare a matrix much larger than you intend to use. This works with 
a few megabytes of data. It is not very efficient, so scaling up may become a 
problem.
m22 <- matrix(NA, 1:60, ncol=6)

It does not work to add a new column to the matrix, as in you get an error if 
you try m22[ , 7] but convert to data frame and add a column

m23 <- data.frame(m22)
m23$x7 <- 12

The only penalty that I know of to having unused space in a matrix is the 
amount of memory it takes. One side effect is that your program may have a 
mistake that you would normally catch with a subscript out of bounds error but 
with the extra space it now runs without errors.

Tim



-Original Message-
From: R-help  On Behalf Of Richard O'Keefe
Sent: Thursday, February 29, 2024 5:29 AM
To: Steven Yen 
Cc: R-help Mailing List 
Subject: Re: [R] Initializing vector and matrices

[External Email]

x <- numeric(0)
for (...) {
 x[length(x)+1] <- ...
}
works.
You can build a matrix by building a vector one element at a time this way, and 
then reshaping it at the end.  That only works if you don't need it to be a 
matrix at all times.
Another approach is to build a list of rows.  It's not a matrix, but a list of 
rows can be a *ragged* matrix with rows of varying length.

On Wed, 28 Feb 2024 at 21:57, Steven Yen  wrote:

Is there as way to initialize a vector (matrix) with an unknown length
(dimension)? NULL does not seem to work. The lines below work with a
vector of length 4 and a matrix of 4 x 4. What if I do not know
initially the length/dimension of the vector/matrix?

All I want is to add up (accumulate)  the vector and matrix as I go
through the loop.

Or, are there other ways to accumulate such vectors and matrices?

  > x<-rep(0,4)  # this works but I like to leave the length open  >
for (i in 1:3){
+  x1<-1:4
+  x<-x+x1
+ }
  > x
[1]  3  6  9 12

  > y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to
leave the dimension open
   [,1] [,2] [,3] [,4]
[1,]0000
[2,]0000
[3,]0000
[4,]0000
  > for (i in 1:3){
+   y1<-matrix(17:32, nrow = 4, ncol = 4)
+   y<-y+y1
+ }
  > y
   [,1] [,2] [,3] [,4]
[1,]   51   63   75   87
[2,]   54   66   78   90
[3,]   57   69   81   93
[4,]   60   72   84   96
  >

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat/
.ethz.ch%2Fmailman%2Flistinfo%2Fr-help=05%7C02%7Ctebert%40ufl.edu
%7Cdbccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84
%7C0%7C0%7C638447993707432549%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=
PtWjcDOnwO7PArVOSdgYbpz8ksjDPK%2Bn9ySyhwQC0gE%3D=0
PLEASE do read the posting guide
http://www.r/
-project.org%2Fposting-guide.html=05%7C02%7Ctebert%40ufl.edu%7Cdb
ccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84%7C0%
7C0%7C638447993707438911%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=Igb16
CBYgG21HLEDH4I4gfjjFBa3KjDFK8yEZUmBo8s%3D=0
and provide commented, minimal, self-contained, reproducible code.

__
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.


__
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.


Re: [R] Initializing vector and matrices

2024-02-29 Thread Ebert,Timothy Aaron
You could declare a matrix much larger than you intend to use. This works with 
a few megabytes of data. It is not very efficient, so scaling up may become a 
problem.
m22 <- matrix(NA, 1:60, ncol=6)

It does not work to add a new column to the matrix, as in you get an error if 
you try m22[ , 7] but convert to data frame and add a column

m23 <- data.frame(m22)
m23$x7 <- 12

The only penalty that I know of to having unused space in a matrix is the 
amount of memory it takes. One side effect is that your program may have a 
mistake that you would normally catch with a subscript out of bounds error but 
with the extra space it now runs without errors.

Tim



-Original Message-
From: R-help  On Behalf Of Richard O'Keefe
Sent: Thursday, February 29, 2024 5:29 AM
To: Steven Yen 
Cc: R-help Mailing List 
Subject: Re: [R] Initializing vector and matrices

[External Email]

x <- numeric(0)
for (...) {
x[length(x)+1] <- ...
}
works.
You can build a matrix by building a vector one element at a time this way, and 
then reshaping it at the end.  That only works if you don't need it to be a 
matrix at all times.
Another approach is to build a list of rows.  It's not a matrix, but a list of 
rows can be a *ragged* matrix with rows of varying length.

On Wed, 28 Feb 2024 at 21:57, Steven Yen  wrote:
>
> Is there as way to initialize a vector (matrix) with an unknown length
> (dimension)? NULL does not seem to work. The lines below work with a
> vector of length 4 and a matrix of 4 x 4. What if I do not know
> initially the length/dimension of the vector/matrix?
>
> All I want is to add up (accumulate)  the vector and matrix as I go
> through the loop.
>
> Or, are there other ways to accumulate such vectors and matrices?
>
>  > x<-rep(0,4)  # this works but I like to leave the length open  >
> for (i in 1:3){
> +  x1<-1:4
> +  x<-x+x1
> + }
>  > x
> [1]  3  6  9 12
>
>  > y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to
> leave the dimension open
>   [,1] [,2] [,3] [,4]
> [1,]0000
> [2,]0000
> [3,]0000
> [4,]0000
>  > for (i in 1:3){
> +   y1<-matrix(17:32, nrow = 4, ncol = 4)
> +   y<-y+y1
> + }
>  > y
>   [,1] [,2] [,3] [,4]
> [1,]   51   63   75   87
> [2,]   54   66   78   90
> [3,]   57   69   81   93
> [4,]   60   72   84   96
>  >
>
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat/
> .ethz.ch%2Fmailman%2Flistinfo%2Fr-help=05%7C02%7Ctebert%40ufl.edu
> %7Cdbccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84
> %7C0%7C0%7C638447993707432549%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
> MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=
> PtWjcDOnwO7PArVOSdgYbpz8ksjDPK%2Bn9ySyhwQC0gE%3D=0
> PLEASE do read the posting guide
> http://www.r/
> -project.org%2Fposting-guide.html=05%7C02%7Ctebert%40ufl.edu%7Cdb
> ccaccf29674b10b17308dc39114d38%7C0d4da0f84a314d76ace60a62331e1b84%7C0%
> 7C0%7C638447993707438911%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
> CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C=Igb16
> CBYgG21HLEDH4I4gfjjFBa3KjDFK8yEZUmBo8s%3D=0
> and provide commented, minimal, self-contained, reproducible code.

__
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.

__
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.


Re: [R] Initializing vector and matrices

2024-02-29 Thread Richard O'Keefe
x <- numeric(0)
for (...) {
x[length(x)+1] <- ...
}
works.
You can build a matrix by building a vector one element at a time this way,
and then reshaping it at the end.  That only works if you don't need it to be
a matrix at all times.
Another approach is to build a list of rows.  It's not a matrix, but a list of
rows can be a *ragged* matrix with rows of varying length.

On Wed, 28 Feb 2024 at 21:57, Steven Yen  wrote:
>
> Is there as way to initialize a vector (matrix) with an unknown length
> (dimension)? NULL does not seem to work. The lines below work with a
> vector of length 4 and a matrix of 4 x 4. What if I do not know
> initially the length/dimension of the vector/matrix?
>
> All I want is to add up (accumulate)  the vector and matrix as I go
> through the loop.
>
> Or, are there other ways to accumulate such vectors and matrices?
>
>  > x<-rep(0,4)  # this works but I like to leave the length open
>  >  for (i in 1:3){
> +  x1<-1:4
> +  x<-x+x1
> + }
>  > x
> [1]  3  6  9 12
>
>  > y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to
> leave the dimension open
>   [,1] [,2] [,3] [,4]
> [1,]0000
> [2,]0000
> [3,]0000
> [4,]0000
>  > for (i in 1:3){
> +   y1<-matrix(17:32, nrow = 4, ncol = 4)
> +   y<-y+y1
> + }
>  > y
>   [,1] [,2] [,3] [,4]
> [1,]   51   63   75   87
> [2,]   54   66   78   90
> [3,]   57   69   81   93
> [4,]   60   72   84   96
>  >
>
> __
> 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.

__
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.


Re: [R] Initializing vector and matrices

2024-02-28 Thread Steven Yen
OK. I initialize real large vector and matrix and then shrink them when 
I use them in the loop. The following lines worked. I'd glad to know of 
better approaches.


bsum<-rep(0,1000); bsum
vsum<-matrix(rep(0,100),nrow=1000); vsum
for (ind in 1:3) { mydata <- read.csv(paste0("midata", ind, ".csv"))
...
k<-length(ame.00$bame)
bsum<-bsum[1:k]+ame.00$bame
vsum<-vsum[1:k,1:k]+ame.00$vame
}

On 2/28/2024 4:56 PM, Steven Yen wrote:
Is there as way to initialize a vector (matrix) with an unknown length 
(dimension)? NULL does not seem to work. The lines below work with a 
vector of length 4 and a matrix of 4 x 4. What if I do not know 
initially the length/dimension of the vector/matrix?


All I want is to add up (accumulate)  the vector and matrix as I go 
through the loop.


Or, are there other ways to accumulate such vectors and matrices?

> x<-rep(0,4)  # this works but I like to leave the length open
>  for (i in 1:3){
+  x1<-1:4
+  x<-x+x1
+ }
> x
[1]  3  6  9 12

> y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to 
leave the dimension open

 [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
[4,]    0    0    0    0
> for (i in 1:3){
+   y1<-matrix(17:32, nrow = 4, ncol = 4)
+   y<-y+y1
+ }
> y
 [,1] [,2] [,3] [,4]
[1,]   51   63   75   87
[2,]   54   66   78   90
[3,]   57   69   81   93
[4,]   60   72   84   96
>




__
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.


[R] Initializing vector and matrices

2024-02-28 Thread Steven Yen
Is there as way to initialize a vector (matrix) with an unknown length 
(dimension)? NULL does not seem to work. The lines below work with a 
vector of length 4 and a matrix of 4 x 4. What if I do not know 
initially the length/dimension of the vector/matrix?


All I want is to add up (accumulate)  the vector and matrix as I go 
through the loop.


Or, are there other ways to accumulate such vectors and matrices?

> x<-rep(0,4)  # this works but I like to leave the length open
>  for (i in 1:3){
+  x1<-1:4
+  x<-x+x1
+ }
> x
[1]  3  6  9 12

> y = 0*matrix(1:16, nrow = 4, ncol = 4); # this works but I like to 
leave the dimension open

 [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
[4,]    0    0    0    0
> for (i in 1:3){
+   y1<-matrix(17:32, nrow = 4, ncol = 4)
+   y<-y+y1
+ }
> y
 [,1] [,2] [,3] [,4]
[1,]   51   63   75   87
[2,]   54   66   78   90
[3,]   57   69   81   93
[4,]   60   72   84   96
>

__
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.