Прежде всего, prcomp выполняет анализ главных компонентов. Анализ главных компонентов дает столько компонентов, сколько существует переменных. То, что вы ищете, это факторный анализ:
ff <- factanal(data,20)
см. ?factanal
Если вы хотите сохранить только первые 20 основных компонентов в качестве нового набора данных, вы можете легко выбрать их из функции предиката (). Или даже рассчитать их самостоятельно:
x <- prcomp(USArrests, scale = TRUE)
tt <- predict(x) # the standard way
# below the matrix way
tt2 <- scale(USArrests,x$center,x$scale) %*% x$rotation
# with only 3 components instead of 4
tt3 <- predict(x)[,1:3]
tt4 <- scale(USArrests,x$center,x$scale) %*% x$rotation[,1:3]
Но имейте в виду, что факторный анализ, сокращающий ваш набор данных до 20 факторов, НЕ является тем же, что и сохранение первых 20 основных компонентов PCA.