#' @import tidyverse
NULL
#' Structure Milieu
#'
#' @param identifiant
#'
#' @return un objet de classe milieu avec un identifiant
#' @export
#'
#' @examples
#' m <- Milieu("Prairie")
#' print(m)
Milieu <- function(identifiant) {
m <- new.env()
class(m) <- "Milieu"
m$identifiant <- identifiant
m$especes = list()
m
}
#' Verification si l'objet est de la classe milieu
#'
#' @param x
#'
#' @return True/false en fonction de si l'objet est de classe Milieu ou non
#' @export
#'
#' @examples
#' m <- Milieu("Prairie")
#' is_Milieu(m)
#'
#' #TRUE
is_Milieu <- function(x) {
"Milieu" %in% class(x)
}
#' Ajout des Especes dans un Milieu
#'
#' @param milieu
#' @param ...
#'
#' @return Un objet de classe Milieu contenant ... espèces
#' @export
#'
#' @examples
#' m <- Milieu("Prairie")
#' e1 <- Espece("espece1")
#'
#' insert.Milieu(m,e1)
#'
insert.Milieu <- function(milieu, ...) {
especes <- list(...)
for (e in especes)
milieu$especes[[id(e)]] <- e
reset(milieu)
}
#' Method pour print un objet de classe Milieu
#'
#' @param x
#' @param ...
#'
#' @return
#' @export
#'
#' @examples
#' m <- Milieu("Prairie")
#' print(m)
print.Milieu <- function(x, ...) {
cat("Milieu", x$identifiant, ":nombre d'espèces=", length(x$especes), "\n")
cat("Liste d'espèces : \n")
for (e in x$especes) {
cat(" - ", print(e),"\n")
}
}
#' Length.Milieu
#'
#' @param x
#'
#' @return une valeur numérique
#' @export
#'
#' @examples
length.Milieu <- function(x) {
length(x$especes)
}
#' Fonction qui retourne les especes presentent dans le milieu
#'
#' @param milieu
#'
#' @return Nom des espèces présentent dans le milieu
#' @export
#'
#' @examples
#' m <- Milieu("Prairie")
#' get_species(m)
get_species <- function(milieu) {
milieu$especes
}
#' Convertir une instance Espece en Tibble
#'
#' @param x Une instance Espece
#'
#' @return
#' @export
#'
#' @examples
as_tibble.Milieu <- function(e) {
bind_rows(lapply(e$especes,
function(x) as_tibble(x,milieu_id=id(e))
)
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.