Hi everyone,

Suppose I have a 3D array of datasets, where say dimension 1 corresponds to
cases, dimension 2 to datasets, and dimension 3 to observations within a
dataset.  As an example, suppose I do the following:

> x <- sample(1:20, 48, replace=TRUE)
> datasets <- array(x, dim=c(4,3,2))

Here, for each j=1,2,3, I'd like to think of datasets[,j,] as a single data
matrix with four cases and two observations.  Now, I'd like to be able to
do the following: apply pca to each dataset, and create a matrix of the
first principal component scores.

In this example, I could do:

> pcl<-apply(datasets,2,princomp)

which yields a list of princomp output, one for each dataset, so that the
vector of first principal component scores for dataset 1 is obtained by

> score1set1 <- pcl[[1]]$scores[,1]

and I could then obtain the desired matrix by

> score1matrix <- cbind( score1set1, score1set2, score1set3)


So my first question is: 1) how could I use *apply to do this?  I'm having
trouble because pcl is a list of lists, so I can't use, say, do.call(cbind,
...) without first having a list of the first component score vectors,
which I'm not sure how to produce.

My second question is: 2) Having answered question 1), now suppose there
may be datasets containing NA value -- how could I select the subset of
values from dimension 2 corresponding to the datasets for which this is
true (again using *apply?)?

Thanks in advance for any light you might be able to shed on these
questions!

David Romano

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to