ourMELONS/R/etsiParas.R

31 lines
1 KiB
R
Raw Normal View History

#' @title Etsi Paras
#' @description Search for the best?
#' @param osuus Percentages?
#' @param omaFreqs own Freqs?
#' @param osuusTaulu Percentage table?
#' @param logml log maximum likelihood
etsiParas <- function(osuus, osuusTaulu, omaFreqs, logml) {
ready <- 0
while (ready != 1) {
muutokset <- admix1_muutokset$new()
muutokset <- muutokset$laskeMuutokset4(osuus, osuusTaulu, omaFreqs, logml)
# Work around R's base::max() limitation on complex numbers
2022-07-28 15:47:36 +02:00
if (any(vapply(muutokset, class, vector("character", 1)) == "complex")) {
maxRe <- base::max(Re(as.vector(muutokset)))
maxIm <- base::max(Im(as.vector(muutokset)))
maxMuutos <- complex(real = maxRe, imaginary = maxIm)
} else {
maxMuutos <- base::max(as.vector(muutokset))
2020-01-14 13:06:36 +01:00
}
indeksi <- which(muutokset == maxMuutos)
if (Re(maxMuutos) > 0) {
osuusTaulu <- suoritaMuutos(osuusTaulu, osuus, indeksi)
logml <- logml + maxMuutos
} else {
ready <- 1
}
}
return(c(osuusTaulu, logml))
}