#' Vérifier la validité des données
#'
#' @param data un data.frame ou une matrice contenant les variables civilité, rang,
#' local, hdr, role
#'
#' @details le contenu des variables civilité, rang, local, hdr et role est
#' insensible à la casse. Cependant, les valeurs que peuvent prendre ces
#' variables sont strictement contraintes. La variable civilité ne peut prendre que
#' la valeur Mr ou Mme; la variable rang ne peut prendre que les valeurs A ou B
#' désignant respectivement directeur.es de recherche/professeur.es ou chargé.es
#' de recherche/maitre.s de conférence; la variable local ne peut prendre que
#' les valeurs local ou extérieur, indiquant si les membres du jury sont
#' rattachés ou non à l'école doctorale dans laquelle est inscrit le doctorant;
#' La variable hdr ne peut prendre que les valeurs Oui, Non ou Équivalent,
#' indiquant si les membres du jury possèdent ou non le diplôme d'habilitation à
#' diriger les recherches; la variable role ne peut prendre que les valeurs
#' Directeur, Encadrant, Examinateur et Rapporteur.
#'
#' @return Retourne un tibble contenant le jeu de données si ce dernier est
#' valide.
#'
#' @seealso jury_check
#'
#' @export
jury_validity <- function(data){
## Check data class
#if(is.null(data)) stop("Veuillez fournir une composition de jury!")
stopifnot(any(class(data) %in% c("matrix","list", "data.frame")))
colnames(data) <- stringr::str_to_lower(colnames(data)) %>%
stringi::stri_trans_general(., "Latin-ASCII")
data <- apply(data, 2, function(x)
stringr::str_to_lower(x) %>%
stringi::stri_trans_general(., "Latin-ASCII")
)
data <- tibble::as_tibble(data)
var_needed <- c("civilite", "rang", "hdr", "local", "role")
if( any(!(var_needed %in% colnames(data))) ){
stop("data doit au moins contenir les variables suivantes: civilite, rang, hdr, local, role")}
# check variable
if( any(!(data$civilite %in% c("mme", "m"))) ) {
stop("La civilité fournie ne peut être que Mme ou M (non sensible à la casse).")}
if( any(!(data$rang %in% c("a", "b"))) ) {
stop("Le rang fourni ne peut être que A ou B (non sensible à la casse)")}
if( any(!(data$hdr %in% c("oui", "non", "equivalent"))) ) {
stop("Le hdr fourni ne peut être que Oui, Non ou Équivalent (non sensible à la casse)")}
if( any(!(data$local %in% c("local", "exterieur"))) ) {
stop("La localité fournie ne peut être que Local ou Exterieur (non sensible à la casse)")}
if( any(!(data$role %in% c("rapporteur", "examinateur", "directeur", "encadrant"))) ) {
stop("Le role fourni ne peut être que Rapporteur, Directeur, Encadrant ou Examinateur
(non sensible à la casse)")}
return(data)
}
#' Vérifier la validité de la composition de son jury de thèse.
#'
#' @param data un data.frame ou une matrice contenant les variables civilité, rang,
#' local, hdr, role
#'
#' @details le contenu des variables civilite, rang, local, hdr et role est
#' insensible à la casse ou aux accent. Cependant, les valeurs que peuvent prendre ces
#' variables sont strictement contraintes. La variable civilité ne peut prendre que
#' la valeur Mr ou Mme; la variable rang ne peut prendre que les valeurs A ou B
#' désignant respectivement directeur.es de recherche/professeur.es ou chargé.es
#' de recherche/maitre.s de conférence; la variable local ne peut prendre que
#' les valeurs local ou extérieur, indiquant si les membres du jury sont
#' rattachés ou non à l'école doctorale dans laquelle est inscrit le doctorant;
#' La variable hdr ne peut prendre que les valeurs Oui, Non ou Équivalent,
#' indiquant si les membres du jury possèdent ou non le diplôme d'habilitation à
#' diriger les recherches; la variable role ne peut prendre que les valeurs
#' Directeur, Encadrant, Examinateur et Rapporteur.
#'
#' @seealso jury_check_all
#'
#' @return retourne une erreur si data n'est pas dans un bon format ou si la
#' composition du jury de thèse n'est pas valide.
#'
#' @examples
#' data(jury_example)
#' jury_check(jury_example)
#'
#' @export
jury_check <- function(data, binary = FALSE, gender_biais = FALSE){
require(magrittr) #needed to use pipe
data %<>% jury_validity()
custom_function <- alert_functions(binary, gender_biais)
#TODO: check that jury check all works well
result <- with(custom_function, {
## Nombre de rapporteur, d'examinateur et directeur de thèse
res <- c(
check_nb_row(data, mystop),
check_nb_reviewer(data, mystop),
check_nb_exam(data, mystop),
check_rank(data, mystop),
check_dom(data, mystop),
check_hdr_reviewer(data, mystop),
check_supervisor(data, mystop),
check_gender_bias(data, mywarning)
)
## Tout a l'air parfait!
mymessage("La composition de jury de thèse que vous avez proposé semble valide.\n",
"Il est néanmoins nécessaire d'obtenir confirmation auprès de votre école doctorale.")
res
})
if(binary == TRUE){
if(any(result == FALSE)){
return(FALSE)
} else {
return(TRUE)
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.