R - Ограничить вывод файла summary.princomp

Я выполняю анализ основных компонентов в наборе данных с более чем 1000 переменных. Я использую R Studio, и когда я запускаю сводку, чтобы увидеть совокупную дисперсию компонентов, я вижу только последние несколько сотен компонентов. Как ограничить сводку только показом, скажем, первых 100 компонентов?

3 ответа

Решение

Это довольно легко изменить print.summary.princomp (Вы можете увидеть оригинальный код, набрав stats:::print.summary.princomp) сделать это:

pcaPrint <- function (x, digits = 3, loadings = x$print.loadings, cutoff = x$cutoff,n, ...) 
{
    #Check for sensible value of n; default to full output
    if (missing(n) || n > length(x$sdev) || n < 1){n <- length(x$sdev)}
    vars <- x$sdev^2
    vars <- vars/sum(vars)
    cat("Importance of components:\n")
    print(rbind(`Standard deviation` = x$sdev[1:n], `Proportion of Variance` = vars[1:n], 
        `Cumulative Proportion` = cumsum(vars)[1:n]))
    if (loadings) {
        cat("\nLoadings:\n")
        cx <- format(round(x$loadings, digits = digits))
        cx[abs(x$loadings) < cutoff] <- paste(rep(" ", nchar(cx[1, 
            1], type = "w")), collapse = "")
        print(cx[,1:n], quote = FALSE, ...)
    }
    invisible(x)
}

pcaPrint(summary(princomp(USArrests, cor=TRUE),
              loadings = TRUE, cutoff = 0.2), digits = 2,n = 2)

Отредактировано, чтобы включить базовую проверку для разумного значения для n, Теперь, когда я это сделал, мне интересно, не стоит ли предлагать R Core в качестве постоянного дополнения; кажется простым и, как это может быть полезно.

Я попытался это, и, кажется, работает: l = загрузки (прин) l[,1:100]

Вы можете поместить нагрузки в матричной форме, вы можете сохранить матрицу в переменную, а затем подмножество (а-ля matrix[,1:100]) это увидеть первый / средний / последний n. В этом примере я использовал head(). Каждый столбец является основным компонентом.

head(
  matrix(
    prin$loadings, 
      ncol=length(dimnames(prin$loadings)[[2]]),
      nrow=length(dimnames(prin$loadings)[[1]])
  ),
100)
Другие вопросы по тегам