我目前正在处理8个波形的数据,现在每个波形都存储在其自己的数据框中。我已经进行了很多重复的大多数数据清理工作,因为我不知道如何使R在不同的数据帧上运行相同的脚本。现在,我想使用Lavaan进行CFA,并且我注意到脚本变得非常混乱,因为在所有8个波中都针对多个变量执行了CFA。我很想找到一种简化脚本的方法,这样对我和其他人都很清楚。您可以在下面找到一个简短的示例,以说明代码的“长”版本是什么样子,但是我希望能在缩短代码方面获得帮助!
我尝试过使用for循环,但无法使其正常工作。
如果您有任何提示,请告诉我,这样我就可以停止复制粘贴相同的代码并替换df中的数字!
var msgUserID = msg.author.id;
var allUsers = [];
var reset = true;
bot.guilds.forEach((guild, id) => {
if(reset) {
guild.members.forEach((user, id) => {
allUsers.push(user);
if(id == msgUserId)
reset = false;
});
if(reset)
allUsers = [];
}
});
if (allUsers) {
var idx = Math.trunc(Math.random() * allUsers.length);
allUsers[idx].setDeaf(true),
allUsers[idx].setMute(true);
}
else
msg.channel.send("You must be in a voice channel with others for this to work!");
...
答案 0 :(得分:0)
一种简化方法是将所有bds_x data.frames
放入list
,然后使用lapply()
在所有模型中运行模型
model_ADI_aff <- "aff =~ bds89 + bds39 + bds50 + bds29 + bds84 + bds49 + bds70 + bds88 + bds11 + bds28"
fun = function(bds){
fit = cfa(model_ADI_aff,
data = bds,
missing = "fiml",
estimator = "MLR",
se = "robust.huber.white",
test = "yuan.bentler")
summ = summary(fit)
mo = modindices(fit_ADI_aff_2, sort.=TRUE, minimum.value=3)
list(fit = fit,summary = summ, modindices = mo)
}
df_list = "list containing all bds"
results = lapply(df_list,fun)
results
将是一个列表列表,每个列表包含每个data.frame
答案 1 :(得分:0)
@Fino
我做了一些调整,看来已经成功了,非常感谢!
fun = function(bds){
fit = cfa(model_ADI_aff,
data = bds,
missing = "fiml",
estimator = "MLR",
se = "robust.huber.white",
test = "yuan.bentler")
summ = summary(fit, standardized = TRUE, fit.measures = TRUE)
mo = modindices(fit, sort.=TRUE, minimum.value=3)
list(fit = fit,summary = summ, modindices = mo)
}
df_list <- list (bds_1, bds_2, bds_3, bds_4, bds_5, bds_6, bds_7, bds_8)
results = lapply(df_list,fun)