# [R] [EXT] Initializing vector and matrices

Steven Yen @tyen @end|ng |rom ntu@edu@tw
Thu Feb 29 09:23:28 CET 2024

```Hello Eik:

Thanks. I do not need to sample. Essentially, I have a do loop which
produces 24 vectors of length of some length (say k=300) and 24 matrices
of 300x300. Then, I simply need to  take the averages of these 24
vectors and matrices:

x=(x1+x2+...+x24)/k

y=(y1+y2+...+y24)/k

I am just looking for ways to do this in a do loop, which requires
initialization (to 0's) of x and y. My struggle is not knowning length
of x until x1 is produced in the first of the loop. Thanks.

Steven

On 2/28/2024 6:22 PM, Eik Vettorazzi wrote:
> Hi Steven,
> It's not entirely clear what you actually want to achieve in the end.
>
> As soon as you "know" x1, and assuming that the different "xi" do not
> differ in length in the real application, you know the length of the
> target vector.
> Instead of the loop, you can use 'Reduce' without having to initialize
> a starting vector.
>
> # generate sample vectors, put them in a list
>
> xi<-lapply(1:5, \(x)sample(5))
>
> # look at xi
> xi
>
> # sum over xi
> Reduce("+",xi)
>
> this works also for matrices
>
> # generate sample matrices, put them in a list
> Xi<-lapply(1:3, \(x)matrix(sample(16), nrow=4))
>
> # look at them
> Xi
>
> # sum over Xi
> Reduce("+",Xi)
>
> Hope that helps
>
> Eik
>
>
> Am 28.02.2024 um 09:56 schrieb 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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help