[英]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不太熟悉的教授一起工作,並且可能會因缺少標簽而感到沮喪。 那么在第二種情況下標簽會發生什么呢? 我又該如何找回他們?
問題是miniset
是cast_df
, factanal
調用為as.matrix(x)
。 as.matrix.cast_df
方法使用rrownames
和rcolnames
(所有reshape
函數)提取“特殊尺寸名稱”。
對於miniset
這些為NULL
(因此,行miniset
丟失)。 不知道您如何構造miniset
在這里我無濟於事。 (您必須在創建cast_df
對象時使用reshape
構造miniset
cast_df
。
好消息是
factanal(as.data.frame(miniset))
如你所願
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.