2012-08-24 1 views
5

問題定義:ソートされた係数ロードテーブルをエクスポートするにはどうすればよいですか?

をクラス「負荷」のオブジェクトのソートされたバージョンをエクスポートサイケ・パッケージのfa -functionに因子分析を実行した後、私は1つのように見える因子負荷テーブルを取得ここに示す:

Loadings: 
     Factor1 Factor2 Factor3 
TH_Q1  0.173 0.548 0.403 
TH_Q2  0.306 0.291 0.825 
TH_Q3  0.334 0.203 0.825 
TH_Q4  0.262 0.536 0.171 
TH_Q5  0.235 0.686   
TH_Q6  0.125 0.836   
TH_Q7  0.200 0.838   
TH_Q8_A1       
TH_Q8_A2   0.155   
TH_Q9  0.644 0.133 0.171 
TH_Q10 0.608 0.208 0.157 
TH_Q11 0.569 0.161 0.306 
TH_Q12 0.722   0.127 
TH_Q13 0.661 0.311   
TH_Q14 0.562 0.407   
TH_Q15 0.675 0.422   

このテーブルの上に機能printを実行した後(変数f.loadingsに格納されている)、私は、ソートテーブルprint(f.loadings, digits=2, cutoff=.3, sort=TRUE)を取得します

Loadings: 
     Factor1 Factor2 Factor3 
TH_Q9  0.64     
TH_Q10 0.61     
TH_Q11 0.57   0.31 
TH_Q12 0.72     
TH_Q13 0.66 0.31   
TH_Q14 0.56 0.41   
TH_Q15 0.68 0.42   
TH_Q1    0.55 0.40 
TH_Q4    0.54   
TH_Q5    0.69   
TH_Q6    0.84   
TH_Q7    0.84   
TH_Q2  0.31   0.82 
TH_Q3  0.33   0.83 
TH_Q8_A1       
TH_Q8_A2       

printしかし、オブジェクトの「不可視」コピーが返されるため、この結果を要求された形式でエクスポートすることはできません。私はしかし、このテーブルの.csvバージョンをエクスポートする方法を探したいと思います。

クラス「読み込み中」のオブジェクトの正しい並べ替えを行うために、write.csvのパラメータを指定する方法を見つけることができませんでした。 print関数の結果を代入しても、ソートされていないバージョンしか返されないため、この問題は解決されません。したがって、x <- print(f.loadings, digits=2, cutoff=.3, sort=TRUE)を呼び出してから、新しい変数xを呼び出しても、未分類バージョンのテーブルが返されます。

「ローディング」オブジェクトをソートしてこのオブジェクトを目に見えるように戻すにはどのような機能が適していますか?つまり、どのようにソートされたテーブルをエクスポートできますか?

コードテーブルを生成する:

f.loadings <- structure(c(0.172693322885797, 0.306277415972136, 0.334012445825371, 
0.261822356615649, 0.234600824098634, 0.124541887813939, 0.200125976802047, 
0.0199775267669519, 0.0771905784767979, 0.643886342785064, 0.608004298828405, 
0.569498016145868, 0.722454442131503, 0.660683752725898, 0.561975379133291, 
0.675119271585253, 0.548184083921831, 0.291215413974386, 0.20334622551054, 
0.535545380240845, 0.685635981787823, 0.836401389336655, 0.837525597359627, 
0.0186113870539496, 0.154659865540958, 0.132908227837058, 0.20832344061795, 
0.160657979843522, 0.0933961709813049, 0.311465272208257, 0.406860675137862, 
0.421946817384512, 0.402664774610544, 0.824934582975472, 0.825220077707656, 
0.170809720550637, -0.0486225264368695, 0.0612401518170266, 0.052596915030506, 
-0.0463868732056794, 0.0208945338424677, 0.171412077700389, 0.156524506151013, 
0.306203004564158, 0.127377474768802, -0.0869197819037828, -0.0962274476959987, 
-0.0465278761105364), .Dim = c(16L, 3L), .Dimnames = list(c("TH_Q1", "TH_Q2", "TH_Q3", "TH_Q4", "TH_Q5", "TH_Q6", "TH_Q7", "TH_Q8_A1", "TH_Q8_A2", "TH_Q9", "TH_Q10", "TH_Q11", "TH_Q12", "TH_Q13", "TH_Q14", "TH_Q15"), c("Factor1", "Factor2", "Factor3")), class = "loadings") 

答えて

4

loadingsのデフォルトの印刷方法をハックする方法は次のとおりです。 print文をnewxに割り当ててエクスポートしました。 printLoadingsの結果を変数に代入すると、ソートされたオブジェクトが自由に使用できます。結果は文字のテーブルになりました。数値に変換する練習としてあなたに任せておきます。

> getS3method("print","loadings") #get the hidden method and modify it 
printLoadings <- function (x, digits = 3, cutoff = 0.1, sort = FALSE, ...) 
{ 
    Lambda <- unclass(x) 
    p <- nrow(Lambda) 
    factors <- ncol(Lambda) 
    if (sort) { 
     mx <- max.col(abs(Lambda)) 
     ind <- cbind(1L:p, mx) 
     mx[abs(Lambda[ind]) < 0.5] <- factors + 1 
     Lambda <- Lambda[order(mx, 1L:p), ] 
    } 
    cat("\nLoadings:\n") 
    fx <- format(round(Lambda, digits)) 
    names(fx) <- NULL 
    nc <- nchar(fx[1L], type = "c") 
    fx[abs(Lambda) < cutoff] <- paste(rep(" ", nc), collapse = "") 
    newx <- print(fx, quote = FALSE, ...) # I assigned this to a variable 
    vx <- colSums(x^2) 
    varex <- rbind(`SS loadings` = vx) 
    if (is.null(attr(x, "covariance"))) { 
     varex <- rbind(varex, `Proportion Var` = vx/p) 
     if (factors > 1) 
     varex <- rbind(varex, `Cumulative Var` = cumsum(vx/p)) 
    } 
    cat("\n") 
    print(round(varex, digits)) 
    invisible(newx) #previously returned x 
} 

mmm <- printLoadings(f.loadings) 
> str(mmm) 
chr [1:16, 1:3] " 0.173" " 0.306" " 0.334" " 0.262" " 0.235" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : chr [1:16] "TH_Q1" "TH_Q2" "TH_Q3" "TH_Q4" ... 
    ..$ : chr [1:3] "Factor1" "Factor2" "Factor3" 

> as.table(mmm) 
     Factor1 Factor2 Factor3 
TH_Q1  0.173 0.548 0.403 
TH_Q2  0.306 0.291 0.825 
TH_Q3  0.334 0.203 0.825 
TH_Q4  0.262 0.536 0.171 
+0

ありがとう!私は 'getS3method'を知らず、メソッド内の関数を検索すると失われてしまった。将来も本当に役に立つでしょう! – smoens

1

関数invisible()との結果を返す場合、それは単に結果が印刷されていないことを意味します。ただし、結果を変数に代入し、他のオブジェクトと同様に操作できます。

ので:

str(x) 
loadings [1:16, 1:3] 0.173 0.306 0.334 0.262 0.235 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : chr [1:16] "TH_Q1" "TH_Q2" "TH_Q3" "TH_Q4" ... 
    ..$ : chr [1:3] "Factor1" "Factor2" "Factor3" 

あなたが今の結果をエクスポートするwrite.csv(x)を使用することができます。

x <- print(f.loadings) 
x 
Loadings: 
     Factor1 Factor2 Factor3 
TH_Q1  0.173 0.548 0.403 
TH_Q2  0.306 0.291 0.825 
TH_Q3  0.334 0.203 0.825 
TH_Q4  0.262 0.536 0.171 
TH_Q5  0.235 0.686   
TH_Q6  0.125 0.836   
TH_Q7  0.200 0.838   
TH_Q8_A1       
TH_Q8_A2   0.155   
TH_Q9  0.644 0.133 0.171 
TH_Q10 0.608 0.208 0.157 
TH_Q11 0.569 0.161 0.306 
TH_Q12 0.722   0.127 
TH_Q13 0.661 0.311   
TH_Q14 0.562 0.407   
TH_Q15 0.675 0.422   

       Factor1 Factor2 Factor3 
SS loadings  3.259 3.145 1.747 
Proportion Var 0.204 0.197 0.109 
Cumulative Var 0.204 0.400 0.509 

Similary、str(x)は、結果が行列であることを示します。

+0

私の謝罪...私は質問でこれを指定している必要があります...私はこれを試してみましたが、私は、コマンドを実行した場合、 'X < - 印刷(f.loadings、桁= 2、カットオフ= .3、sort = TRUE) '新しい変数xを呼び出すと、未分類バージョンのテーブルが再び返されます。 – smoens

0

印刷機能でソートするのではなく、fa.sort関数を試してください。ある

、もし < F - ファ - を印刷しませんが、ソートされたオブジェクト、または FS <を返さないFA(Thurstone、3)(= TRUEソートF、) することができますいずれかの印刷。 sort(f)ソートされたオブジェクトを返すオブジェクトで、csvとしてエクスポートできます。

ビル

関連する問題