如何在R中的princomp中选择加载

时间:2015-06-25 07:49:24

标签: r pca

我正在尝试使用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而不是所有值?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

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

> 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