################### #Description: This R code uses Mplus Automation R Package to # save model summaries in MS Excel format at 3 decimal places #Instructions: Search code for text 'USER' and update the folder information #Writer: Jonathon Little #Date: 2024 #Cite: Little, J. (2024). MplusSummaryTable. (Version 1.0) [Computer software]. Retrieved from https://www.statpsychservices.com.au/resources #Acknowledgments: ChatGpt4 was used to help debug and refine this code. ################### # Load necessary libraries #install.packages("MplusAutomation") # Uncomment if not installed #install.packages("openxlsx") # Uncomment if not installed library(MplusAutomation) library(openxlsx) runModels_Interactive() #####USER CHANGE FOLDER HERE###### # Define the folder containing your Mplus output files folder_path <- "C:/Users/Jane Smith/" # List all Mplus output files (.out files) in the folder output_files <- list.files(folder_path, pattern = "\\.out$", full.names = TRUE) # Initialize an empty list to store summaries model_summaries_list <- list() # Initialize a variable to store all column names all_columns <- NULL # Loop through each file and extract model summaries for (file in output_files) { try({ # Read the model output and extract summaries directly mplus_model_summaries <- readModels(file, what = "summaries")$summaries # If summaries are not NULL, process them if (!is.null(mplus_model_summaries)) { # Get the column names of the current summary current_columns <- colnames(mplus_model_summaries) # Update the all_columns variable with the union of all columns if (is.null(all_columns)) { all_columns <- current_columns } else { all_columns <- union(all_columns, current_columns) } # Add to the list model_summaries_list <- append(model_summaries_list, list(mplus_model_summaries)) } }, silent = TRUE) # Suppress errors and continue with the next file } # Check if summaries were successfully extracted if (length(model_summaries_list) == 0) { stop("No model summaries were extracted. Please check the input files.") } # Standardize the columns of each summary model_summaries_list <- lapply(model_summaries_list, function(summary) { # Add missing columns as NA missing_cols <- setdiff(all_columns, colnames(summary)) for (col in missing_cols) { summary[[col]] <- NA } # Ensure columns are in the correct order summary <- summary[, all_columns, drop = FALSE] return(summary) }) # Combine the summaries into a single data frame all_summaries <- do.call(rbind, model_summaries_list) # Create a new workbook wb <- createWorkbook() # Add a worksheet to the workbook addWorksheet(wb, "Model Summaries") # Write the combined model summaries to the worksheet writeData(wb, sheet = 1, all_summaries) #####USER CHANGE FOLDER HERE###### # Save the workbook to the specified folder saveWorkbook(wb, "C:/Users/Jane Smith/Combined_model_summaries.xlsx", overwrite = TRUE)