3

1000を超える変数を持つデータセットで主成分分析を実行しています。R Studioを使用していますが、サマリーを実行してコンポーネントの累積差異を確認すると、最後の数百のコンポーネントしか表示されません。たとえば、最初の100個のコンポーネントのみを表示するように要約を制限するにはどうすればよいですか?

4

3 に答える 3

2

私はこれを試しましたが、機能しているようです:l = readings(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。これを行ったので、永続的な追加としてRCoreに提案する価値はないのではないかと思います。シンプルなようで、役に立つかもしれません。

于 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 に答える