3

我正在对包含 1000 多个变量的数据集进行主成分分析。我正在使用 R Studio,当我运行摘要以查看组件的累积方差时,我只能看到最后几百个组件。如何将摘要限制为仅显示前 100 个组件?

4

3 回答 3

2

我试过这个,它似乎正在工作: l = loadings(prin) l[,1:100]

于 2012-07-27T23:04:02.010 回答
1

很容易修改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 作为永久添加;看起来很简单,而且可能很有用。

于 2012-04-07T16:28:34.780 回答
0

您可以将负载以矩阵形式放置,您可以将矩阵保存到一个变量中,然后将其子集(a la matrix[,1:100])以查看第一个/中间/最后一个 n。在这个例子中,我使用了 head()。每列都是一个主成分。

head(
  matrix(
    prin$loadings, 
      ncol=length(dimnames(prin$loadings)[[2]]),
      nrow=length(dimnames(prin$loadings)[[1]])
  ),
100)
于 2012-04-07T16:23:40.537 回答