1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| multi_opls <- function(df, group, method){ library(ropls) colnames(group) <- c('sample','group_name') group[,2] = as.character(group[,2]) group_num <- as.numeric(length(unique(group[,2]))) group_unique <- as.character(unique(group[,2])) for (i in 1:(group_num - 1)) { for (j in (i+1):group_num) { dir.create(paste(group_unique[i],' VS ',group_unique[j], sep = '')) selected_group <- c(group_unique[i],group_unique[j]) group_sub <- dplyr::filter(group, group_name %in% selected_group) df_sub <- df[group_sub$sample,] if (method == 'opls') { opls_res <- opls(df_sub,group_sub$group_name) sample_scores <- as.data.frame(opls_res@scoreMN) loading_scores <- as.data.frame(opls_res@loadingMN) modelDF <- as.data.frame(opls_res@modelDF) vip_value <- as.data.frame(opls_res@vipVn) } else { oplsda_res <- opls(df_sub, group_sub$group_name, predI = 1, orthoI = NA) sample_scores <- as.data.frame(oplsda_res@scoreMN) loading_scores <- as.data.frame(oplsda_res@loadingMN) modelDF <- as.data.frame(oplsda_res@modelDF) vip_value <- as.data.frame(oplsda_res@vipVn) } write.csv(sample_scores, file = paste(group_unique[i],' VS ',group_unique[j], '/', 'sample_scores.csv',sep = '')) write.csv(loading_scores, file = paste(group_unique[i],' VS ',group_unique[j], '/', 'loading_scores.csv',sep = '')) write.csv(modelDF, file = paste(group_unique[i],' VS ',group_unique[j], '/', 'modelDF.csv',sep = '')) write.csv(vip_value, file = paste(group_unique[i],' VS ',group_unique[j], '/', 'vip_value.csv',sep = '')) } } }
R
|