在R中循环采样以创建许多向量

问题描述

我正在使用以下R代码进行PCA分析:

sigma1 <- as.matrix((data[,3:22]))
sigma2 <- as.matrix((data[,23:42]))
sample1 <- mvrnorm(n = 250,mu = as_vector(data[,1]),Sigma = sigma1)
sample2 <- mvrnorm(n = 250,2]),Sigma = sigma2)
sampCombined <- rbind(sample1,sample2);
covCombined <- cov(sampCombined);
covCombinedPCA <- prcomp(sampCombined);
eigenvalues <- covCombinedPCA$sdev^2;

我想重复/循环这个,所以我有50个特征值向量。然后,我想找到50个重复的特征值的均值向量。我该怎么做?

解决方法

您可以将整个代码放入一个函数中。假设该函数称为eigen_fun

eigen_fun <- function(data) {
  sigma1 <- as.matrix((data[,3:22]))
  sigma2 <- as.matrix((data[,23:42]))
  sample1 <- mvrnorm(n = 250,mu = as_vector(data[,1]),Sigma = sigma1)
  sample2 <- mvrnorm(n = 250,2]),Sigma = sigma2)
  sampCombined <- rbind(sample1,sample2);
  covCombined <- cov(sampCombined);
  covCombinedPCA <- prcomp(sampCombined);
  eigenvalues <- covCombinedPCA$sdev^2;
  return(eigenvalues)
}

运行eigen_fun(data)一次会给您一组值。要重复50次,可以使用replicate

mat <- replicate(50,eigen_fun(data))

mat中的每一列都是一组值,可以使用mean来获得每次迭代的colMeans

colMeans(mat)