如何在 R 中的 princomp 中获取选定的载荷

How to get selected loadings in princomp in R

我正在尝试使用 princomp 函数和 iris 数据集的前 4 列进行主成分分析的以下代码:

prin =princomp(iris[1:4])
loadings(prin)

#Loadings:
#             Comp.1 Comp.2 Comp.3 Comp.4
#Sepal.Length  0.361  0.657 -0.582  0.315
#Sepal.Width          0.730  0.598 -0.320
#Petal.Length  0.857 -0.173        -0.480
#Petal.Width   0.358         0.546  0.754

#               Comp.1 Comp.2 Comp.3 Comp.4
#SS loadings      1.00   1.00   1.00   1.00
#Proportion Var   0.25   0.25   0.25   0.25
#Cumulative Var   0.25   0.50   0.75   1.00

我需要上半部分显示的矩阵,其中只有选定的值(小值在那里留空)。

但是,当我尝试执行以下代码时,我得到了所有值(包括在上面的输出中空白的值——我希望它们显示为 NA 或 0):

prinl = loadings(prin)
dd = as.data.frame.matrix(prinl)
dd
#                  Comp.1      Comp.2      Comp.3     Comp.4
#Sepal.Length  0.36138659  0.65658877 -0.58202985  0.3154872
#Sepal.Width  -0.08452251  0.73016143  0.59791083 -0.3197231
#Petal.Length  0.85667061 -0.17337266  0.07623608 -0.4798390
#Petal.Width   0.35828920 -0.07548102  0.54583143  0.7536574

我怎样才能得到一个矩阵或数据框,其空白值为 NA 或 0 而不是所有值?感谢您的帮助。

您可以只选择一些阈值并替换单元格:

> threshold <- 0.2
> dd[abs(dd ) < threshold] <- NA
> dd
                Comp.1     Comp.2     Comp.3     Comp.4
Sepal.Length 0.3613866 -0.6565888 -0.5820299  0.3154872
Sepal.Width         NA -0.7301614  0.5979108 -0.3197231
Petal.Length 0.8566706         NA         NA -0.4798390
Petal.Width  0.3582892         NA  0.5458314  0.7536574