T_stats_3
T_stats_3

Reputation: 155

Storing multiple output vectors without list

I have a matrix of N*200 values

For each row I am calculating the 5 acf values using

for(i in 1:N){
    xx[[i]] <- acf(x[i,], plot=F)$acf[1:5]
}

I was wondering is there an alternative for xx[i] other than using a list? i.e. is it possible to have a matrix of N*5 containing each of the acf values?

I know I can get the list and then unlit this but is there a quicker way?

Upvotes: 0

Views: 33

Answers (1)

tchakravarty
tchakravarty

Reputation: 10954

Use apply for cleaner code:

iN = 1000
mX = matrix(rnorm(iN*200), iN, 200)
mACF = t(apply(mX, MARGIN = 1, 
             FUN = function(vX) acf(vX, plot = FALSE, lag.max = 4)$acf))

Output:

> head(mACF)
     [,1]        [,2]        [,3]        [,4]         [,5]
[1,]    1 -0.01301076 -0.02077288 -0.09442797 -0.010610654
[2,]    1 -0.03060448 -0.06019641 -0.04674656 -0.086555364
[3,]    1  0.09513999 -0.05021542 -0.02757927 -0.002984605
[4,]    1 -0.08135746  0.11003419 -0.06550000  0.033755892
[5,]    1  0.09014033  0.09981602  0.11100782  0.057275603
[6,]    1 -0.08462636 -0.10192390  0.05601853 -0.019114467

Upvotes: 1

Related Questions