簡體   English   中英

使用項目標簽從factanal()打印因子分析

[英]Print factor analysis from factanal() with item labels

編輯

因此,看起來好像是我對library(reshape)調用打破了因素的標簽。 最小示例中未包括此功能,但現在將添加。 創建示例不是必需的,但是重新創建問題是必需的。 我需要圖書館來factanal()我的數據,甚至可以進行factanal() 有什么想法重塑的一部分正在破壞它,以及如何修復它?


原始問題

我一直在對數據進行因子分析,並且在打印結果的方式時遇到間歇性問題。

如果我創建如下數據集:

library(reshape)
mock <- data.frame(
  sample_name1 = sample(1:100),
  sample_name2 = sample(1:100),
  sample_name3 = sample(1:100),
  s_amplename_4 = sample(1:100),
  samplename5 = sample(1:100),
  sa_mplen_a_me_6 = sample(1:100),
  samplename7 = sample(1:100),
  samplename8 = sample(1:100)
)

並使用

factanal(mock, factors = 2)

我得到的輸出非常漂亮地打印出來,項目名稱作為行的標簽,例如:

# Snip snip
Loadings:
                Factor1 Factor2
sample_name1    -0.126  -0.105 
sample_name2    -0.414         
sample_name3     0.665         
s_amplename_4           -0.314 
samplename5              0.850 
sa_mplen_a_me_6 -0.117         
samplename7      0.442         
samplename8     -0.139 

這種輸出正是我想要的。 但是,當我對自己的數據進行相同類型的分析時(在這里為長度表示歉意):

miniset <- structure(list(`clarity1` = c(2, 2, 2, 3, 4.5, 1.5, 1.5, 3.5, 
                                           2, 6, 2.5, 4, 1, 1.5, 6, 2, 5.5, 2, 2, 3, 1.5, 5, 3.5, 2, 1.5, 
                                           2.5, 3, 3, 2, 1), 
                          `clarity2` = c(1.5, 2, 2, 2, 3.5, 5, 3, 5, 
                                           2, 4, 2, 2.5, 1, 1.5, 2, 4, 5, 2, 2, 3.5, 6, 1, 2, 1.5, 1, 2, 
                                           2, 3, 6.5, 1), 
                          `clarity3` = c(3, 3.5, 2, 3.5, 5.5, 4, 6, 5.5, 
                                           2, 3, 3, 3.5, 1, 2.5, 2, 5, 5, 5, 2, 6.5, 5.5, 5, 5.5, 6, 3, 
                                           2, 2, 5, 4.5, 5.5), 
                          `detail1` = c(3, 4, 2, 6, 5, 6.5, 5.5, 
                                          4, 3, 6, 2.5, 4, 1, 4, 2, 4.5, 7, 6.5, 2, 6.5, 6, 2, 6, 5, 2.5, 
                                          5.5, 4, 5.5, 6, 1.5), 
                          `detail2` = c(3.5, 4, 4, 6.5, 4.5, 6, 
                                          4, 4.5, 2, 6, 2.5, 5, 2, 4, 3, 6, 7, 7, 2, 6.5, 6, 3, 6, 6, 2.5, 
                                          6, 3, 5, 6.5, 2.5), 
                          `detail3` = c(2.5, 4, 2, 6, 5, 6, 6, 4, 
                                          2, 6, 2, 5, 2, 3, 3, 5, 6.5, 6, 2, 6.5, 7, 7, 5.5, 5, 3.5, 2, 
                                          3, 5, 6, 2), 
                          `complete1` = c(2, 2.5, 2, 3, 3.5, 5.5, 2.5, 2.5, 
                                            2, 3, 3, 3.5, 2, 4, 3, 3, 7, 4, 2, 3, 6, 3, 5.5, 2, 3, 2, 2, 
                                            3, 6, 3), 
                          `complete2` = c(3, 4.5, 2, 3, 4.5, 6, 6, 4.5, 3, 
                                            3, 3.5, 4, 2, 5, 3, 4, 7, 4, 2, 6, 7, 5, 5, 6, 3, 3, 5, 5, 6, 
                                            2), 
                          `complete3` = c(3, 4.5, 2, 2.5, 4.5, 6.5, 5, 5, 2, 6.5, 
                                            3.5, 3.5, 1, 3, 3, 2.5, 7, 4, 2, 6, 1.5, 7, 5.5, 6.5, 3.5, 5.5, 
                                            3, 3, 2.5, 1), 
                          `truthful1` = c(2.5, 2, 2, 3, 3.5, 2, 2, 2.5, 
                                            2, 3, 3, 2.5, 2, 3, 2, 2, 3.5, 3, 2, 3.5, 1.5, 1, 3.5, 2.5, 3, 
                                            2, 2, 3, 1.5, 1.5), 
                          `truthful2` = c(2.5, 1.5, 2, 2, 3, 1.5, 
                                            2, 1, 1, 5.5, 3, 3.5, 1, 4.5, 2, 2, 5, 2, 2, 1.5, 4.5, 1, 3.5, 
                                            2, 3.5, 2.5, 2, 2, 4.5, 1), 
                          `truthful3` = c(2, 1.5, 2, 3.5, 
                                            2.5, 2, 2, 2.5, 2, 2, 3.5, 2.5, 1, 1.5, 3, 2, 5, 3, 3, 2, 3.5, 
                                            1, 2, 1, 3.5, 2, 2, 2.5, 4.5, 1), 
                          `relevant1` = c(1.5, 1.5, 
                                            2, 5, 2.5, 1.5, 2, 3.5, 2, 4.5, 2.5, 3.5, 1, 3.5, 3, 1.5, 5.5, 
                                            3.5, 2, 2, 6, 3, 3.5, 3, 1.5, 2, 3, 3, 6, 1), 
                          `relevant2` = c(1.5, 
                                            3, 2, 2, 3.5, 1.5, 2.5, 5.5, 1, 2, 3.5, 2, 1, 1.5, 2, 4, 5.5, 
                                            2, 3, 5.5, 5.5, 1, 4, 5, 1.5, 2, 3, 2.5, 3, 1), 
                          `relevant3` = c(1.5, 
                                            2, 2, 3, 2, 1, 2, 2, 1, 2, 1.5, 2.5, 1, 1.5, 2, 1.5, 5.5, 5, 
                                            2, 1, 7, 1, 1, 2, 1, 2, 3, 3, 2.5, 1)), 
                     .Names = c("clarity1", 
                                "clarity2", "clarity3", "detail1", "detail2", "detail3", 
                                "complete1", "complete2", "complete3", "truthful1", "truthful2", 
                                "truthful3", "relevant1", "relevant2", "relevant3"), 
                     row.names = c(NA, 30L), class = c("cast_df", "data.frame"))

factanal(miniset, factors = 3)

結果不那么漂亮,例如:

Loadings:
      Factor1 Factor2 Factor3
 [1,]          0.222   0.664 
 [2,]  0.559   0.524         
 [3,]  0.824                 
 [4,]  0.740   0.361   0.282 
 [5,]  0.698   0.374   0.251 
 [6,]  0.783   0.278   0.265 
 [7,]  0.498   0.598   0.140 
 [8,]  0.796   0.227   0.204 
 [9,]  0.490  -0.240   0.835 
[10,]  0.147   0.156   0.348 
[11,]          0.697   0.324 
[12,]          0.756         
[13,]  0.319   0.811   0.204 
[14,]  0.567   0.252   0.108 
[15,]  0.320   0.690 

因此,我現在不用索引了,而是用漂亮的項目名稱作為加載的標簽。 雖然對我來說很好,但是我明天將與一位對R不太熟悉的教授一起工作,並且可能會因缺少標簽而感到沮喪。 那么在第二種情況下標簽會發生什么呢? 我又該如何找回他們?

問題是minisetcast_dffactanal調用為as.matrix(x) as.matrix.cast_df方法使用rrownamesrcolnames (所有reshape函數)提取“特殊尺寸名稱”。

對於miniset這些為NULL (因此,行miniset丟失)。 不知道您如何構造miniset在這里我無濟於事。 (您必須在創建cast_df對象時使用reshape構造miniset cast_df

好消息是

factanal(as.data.frame(miniset))

如你所願

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM