R的神秘输出来源?

时间:2015-04-03 15:08:48

标签: r

我使用以下代码使用mtcars数据和factalal函数进行因子分析。 fit $ loadings的打印给出了比例方差,但它似乎没有str(fit $ loadings):

> fit <- factanal(mtcars, 3, rotation="varimax")
> fit$loadings

Loadings:
     Factor1 Factor2 Factor3
mpg   0.643  -0.478  -0.473 
cyl  -0.618   0.703   0.261 
disp -0.719   0.537   0.323 
hp   -0.291   0.725   0.513 
drat  0.804  -0.241         
wt   -0.778   0.248   0.524 
qsec -0.177  -0.946  -0.151 
vs    0.295  -0.805  -0.204 
am    0.880                 
gear  0.908           0.224 
carb  0.114   0.559   0.719 

               Factor1 Factor2 Factor3
SS loadings      4.380   3.520   1.578
Proportion Var   0.398   0.320   0.143  <<<<<<<<<<<<< I NEED THESE NUMBERS AS A VECTOR
Cumulative Var   0.398   0.718   0.862
> 
> str(fit$loadings)
 loadings [1:11, 1:3] 0.643 -0.618 -0.719 -0.291 0.804 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:11] "mpg" "cyl" "disp" "hp" ...
  ..$ : chr [1:3] "Factor1" "Factor2" "Factor3"

如何从fit $ loadings中获得比例方差向量?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

obj <- fit$loadings。以下是如何获得结果的完整路径。

通过撰写fit$loadings(或obj),我们实际上会调用print(obj)。因此,在查看str后,您可能需要检查特定print方法对obj执行的操作。要了解我们应该查找的方法,请检查class(obj)并获取"loadings"

然后,写print.loadings没有给出任何东西,因为隐藏了这个功能。因此,由于函数factanal位于包stats中,因此我们调用stats:::print.loadings并获取该函数的完整源代码。通过检查,我们看到我们可以得到如下所需的结果。

colSums(obj^2) / nrow(obj)
#   Factor1   Factor2   Factor3 
# 0.3982190 0.3199652 0.1434125