[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
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list