[R] [EXT] Initializing vector and matrices

Eik Vettorazzi E@Vettor@zz| @end|ng |rom uke@de
Wed Feb 28 11:22:58 CET 2024


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.

-- 
Eik Vettorazzi

Universitätsklinikum Hamburg-Eppendorf
Institut für Medizinische Biometrie und Epidemiologie

Christoph-Probst-Weg 1
4. Obergeschoss, Raum 04.1.021.1

20246 Hamburg

Telefon: +49 (0) 40 7410 - 58243
Fax:     +49 (0) 40 7410 - 57790

Web: www.uke.de/imbe

Webex: https://webteaching-uke.webex.com/meet/e.vettorazzi


--

_____________________________________________________________________

Universitätsklinikum Hamburg-Eppendorf; Körperschaft des öffentlichen Rechts; Gerichtsstand: Hamburg | www.uke.de
Vorstandsmitglieder: Prof. Dr. Christian Gerloff (Vorsitzender), Joachim Prölß, Prof. Dr. Blanche Schwappach-Pignataro, Matthias Waldmann (komm.)
_____________________________________________________________________

SAVE PAPER - THINK BEFORE PRINTING


More information about the R-help mailing list