2015-04-03 38 views
2

我正在使用以下代碼使用mtcars數據和factanal函數進行因子分析。配合$負荷的打印給比例變化,但它似乎並沒有在那裏的STR(FIT $載荷):R中神祕的輸出源?

> 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" 

我怎樣才能得到合適的負荷$比例變差矢量?謝謝你的幫助。

回答

2

obj <- fit$loadings。以下是如何獲得結果的完整路徑。我們實際上撥打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 
+1

即將發佈相同的答案。另一個獲得源代碼的方法是'getAnywhere(print.loadings)'。 – tonytonov 2015-04-03 15:27:59

+0

這正是我所需要的。謝謝。 – rnso 2015-04-03 15:55:11