Hello Sharka:
I did not change any code in champ.DMP() since version 2.8.7 to version 2.8.9. The error happens when ChAMP want to calculate mean value for each DMP in each group. I suspect the reason is there is only 1 DMP significant, thus code
beta[com.idx, which(pheno == Compare[[i]][1])]
Can only select on row only, which is a vector not a matrix, thus rowMeans function can not be applied on that. Could you check previous output of champ.DMP()? I suspect there is one result showing that only 1 DMP is detected, if there are two, I believe this error would not happen.
Another thing is I know you are using same data set, but did you do normalization again? BMIQ normalization use Random Seed in the function, so if you run BMIQ on same data twice, the result would be slightly different. So if you use the same data, run normalization twice, then use the result into champ.DMP(), one may find 2-3 DMPs, and the other is only 1 DMP, then the previous result would not trigger any error, but the 1 DMP result would.
The most important change in 2.8.9 is champ.import(), which now can process mix array, and changed "minfi" method's annotation. So if you reloaded the data, the result also might be slightly different.
Thus, I wonder, if you have any process of reloading or renormliazing data? If so, the error might be triggered by some random difference. Also I suggest you check your previous result from version 2.8.7, see if in previous result, DMP list contains very few CpGs, and their p value cutoff are close to 0.05, which might failed this threshold because of your reprocessing work.
About solution, champ.DMP() support multiple phenotype yes, but if you want to compare specific two phenotype, you may assign parameter "compare.group" to achive that, to avoid other not important and less significant comparision fail the program.
I will modify code in next version to avoid this error happen.
Best
Yuan Tian
I can confirm the error appears when the number of significant DMP is one.