主因子分析(Varimax旋转+回归得分)获取第5受访者Q79因子值的R脚本问题
问题分析与修正方案
原脚本的核心问题
- 重复读取数据:在RapidMiner的
rm_main函数里,输入数据已经通过data参数传进来了,没必要再用read_excel读取本地文件,这会覆盖传入的数据集,直接打乱逻辑。 - 变量选得不对:原脚本取了前38列,但我们要的是Q79组的q79_1到q79_6,得精准筛选这几列。
- 计算逻辑完全错了:
loadings %*% factors根本没必要,因子得分factor_scores就是我们要的结果,直接提第5行就行。 - 没处理数据类型:没确认Q79变量是不是数值型,因子分析必须用数值数据。
修正后的R脚本
rm_main = function(data) { # 加载所需包(建议先在RapidMiner的R环境里装好psych包) library(psych) # 1. 精准筛选Q79组变量:匹配q79_1到q79_6 q79_data <- data[, grepl("^q79_\\d$", colnames(data))] # 2. 强制转成数值型,避免字符/因子类型搞砸分析 q79_data <- as.data.frame(lapply(q79_data, as.numeric)) # 3. 主因子分析:按要求设置参数 fa_result <- fa(q79_data, nfactors = 3, rotate = "varimax", scores = "regression", fm = "pa") # 明确指定主因子分析方法(psych默认是最小残差,pa才是主因子) # 4. 提取第5位受访者的3个因子得分 fifth_respondent_scores <- fa_result$scores[5, ] # 5. 返回数据框给RapidMiner,方便直接查看结果 return(as.data.frame(fifth_respondent_scores)) }
关键修正说明
- 适配RapidMiner数据传入逻辑:全程用RapidMiner传进来的
data参数,不再本地读文件,保证和流程里的数据源一致。 - 精准选变量:用正则表达式匹配列名,就算列位置变了也能准确找到Q79组变量。
- 明确主因子方法:加了
fm = "pa",确保用的是主因子分析,不是默认的最小残差法。 - 结果友好返回:把因子得分转成数据框返回,在RapidMiner里能直接看到表格形式的结果,不是只在控制台打印。
- 数据类型兜底:强制转数值型,避免非数值数据导致分析报错。
在RapidMiner里看结果的步骤
- 把修正后的脚本放进RapidMiner的
Execute R算子里。 - 上游用
Read Excel算子加载你的Q79数据,连到Execute R的输入端口。 - 运行流程后,把
Execute R的输出连到Result端口,就能在结果面板里看到第5位受访者的3个因子值了。
内容的提问来源于stack exchange,提问作者Ali sh
相关产品推荐
相关产品推荐

