## -----------------------------------------------------------------------------
data("fruits_traits", package = "mFD")

fruits_traits <- fruits_traits[ , 1:4]      # only keep the first 4 traits to illustrate FEs

# Decrease the number of modalities per trait for convenience ...
# ... (to have less unique combinations of trait values):

# Size grouped into only 3 categories:
fruits_traits[ , "Size"] <- as.character(fruits_traits[ , "Size"])

fruits_traits[which(fruits_traits[ , "Size"] %in% c("0-1cm", "1-3cm", "3-5cm")), "Size"] <- "small"
fruits_traits[which(fruits_traits[ , "Size"] == "5-10cm"), "Size"]  <- "medium"
fruits_traits[which(fruits_traits[ , "Size"] == "10-20cm"), "Size"] <- "large"

fruits_traits[ , "Size"] <- factor(fruits_traits[, "Size"], levels = c("small", "medium", "large"), ordered = TRUE)

# Plant type grouped into only 2 categories:
fruits_traits[ , "Plant"] <- as.character(fruits_traits[, "Plant"])

fruits_traits[which(fruits_traits[ , "Plant"] != "tree"), "Plant"] <- "Not_tree"
fruits_traits[ , "Plant"] <- factor(fruits_traits[ , "Plant"], levels = c("Not_tree", "tree"), ordered = TRUE)

# Plant Origin grouped into only 2 categories:
fruits_traits[ , "Climate"] <- as.character(fruits_traits[ , "Climate"])

fruits_traits[which(fruits_traits[ , "Climate"] != "temperate"), "Climate"] <- "tropical"
fruits_traits[ , "Climate"] <- factor(fruits_traits[, "Climate"], levels = c("temperate", "tropical"), ordered = TRUE)

# Display the table:
knitr::kable(head(fruits_traits), caption = "Species x traits dataframe based on *fruits* dataset")

## -----------------------------------------------------------------------------
data("baskets_fruits_weights", package = "mFD")

knitr::kable(as.data.frame(baskets_fruits_weights[1:6, 1:6]), 
             caption = "Species x assemblages dataframe based on *fruits* dataset")

## -----------------------------------------------------------------------------
data("fruits_traits_cat", package = "mFD")

# only keep traits 1 - 4:
fruits_traits_cat <- fruits_traits_cat[1:4, ]

knitr::kable(head(fruits_traits_cat), 
             caption = "Traits types based on *fruits & baskets* dataset")

## -----------------------------------------------------------------------------
# summarize species assemblages: 
asb_sp_fruits_summ <- mFD::asb.sp.summary(baskets_fruits_weights)

# retrieve species occurrences for the first 3 assemblages (fruits baskets):
head(asb_sp_fruits_summ$asb_sp_occ, 3)

asb_sp_fruits_occ <- asb_sp_fruits_summ$"asb_sp_occ"

## ---- results = "hide", eval = FALSE------------------------------------------
#  mFD::sp.to.fe(
#    sp_tr       = fruits_traits,
#    tr_cat      = fruits_traits_cat,
#    fe_nm_type  = "fe_rank",
#    check_input = TRUE)

## -----------------------------------------------------------------------------
sp_to_fe_fruits <- mFD::sp.to.fe(
  sp_tr       = fruits_traits, 
  tr_cat      = fruits_traits_cat, 
  fe_nm_type  = "fe_rank", 
  check_input = TRUE) 

## -----------------------------------------------------------------------------
sp_to_fe_fruits$"fe_nm"

## -----------------------------------------------------------------------------
sp_fe <- sp_to_fe_fruits$"sp_fe"
sp_fe

## -----------------------------------------------------------------------------
fe_tr <- sp_to_fe_fruits$"fe_tr"
fe_tr

## -----------------------------------------------------------------------------
fe_nb_sp <- sp_to_fe_fruits$"fe_nb_sp"
fe_nb_sp

## -----------------------------------------------------------------------------
sp_to_fe_fruits$"details_fe"

## ---- results = "hide", eval = FALSE------------------------------------------
#  mFD::alpha.fd.fe(
#    asb_sp_occ       = asb_sp_fruits_occ,
#    sp_to_fe         = sp_to_fe_fruits,
#    ind_nm           = c("fred", "fored", "fvuln"),
#    check_input      = TRUE,
#    details_returned = TRUE)

## -----------------------------------------------------------------------------
alpha_fd_fe_fruits <- mFD::alpha.fd.fe(
  asb_sp_occ       = asb_sp_fruits_occ, 
  sp_to_fe         = sp_to_fe_fruits,
  ind_nm           = c("fred", "fored", "fvuln"),
  check_input      = TRUE,
  details_returned = TRUE) 

## -----------------------------------------------------------------------------
# dataframe with indices values for each assemblage:
alpha_fd_fe_fruits$"asb_fdfe"

# a matrix gathering the number of species per FE in each assemblage
alpha_fd_fe_fruits$"details_fdfe"

## ---- results = FALSE, eval = FALSE-------------------------------------------
#  mFD::alpha.fd.fe.plot(
#    alpha_fd_fe       = alpha_fd_fe_fruits,
#    plot_asb_nm       = c("basket_1"),
#    plot_ind_nm       = c("fred", "fored", "fvuln"),
#    name_file         = NULL,
#    color_fill_fored  = "darkolivegreen2",
#    color_line_fred   = "darkolivegreen4",
#    color_fill_bar    = "grey80",
#    color_fill_fvuln  = "lightcoral",
#    color_arrow_fvuln = "indianred4",
#    size_line_fred    = 1.5,
#    size_arrow_fvuln  = 1,
#    check_input       = TRUE)

## ---- fig.height = 7, fig.width = 12, fig.align = "center"--------------------
mFD::alpha.fd.fe.plot(
  alpha_fd_fe       = alpha_fd_fe_fruits,
  plot_asb_nm       = c("basket_1"),
  plot_ind_nm       = c("fred", "fored", "fvuln"),
  name_file         = NULL,
  color_fill_fored  = "darkolivegreen2",
  color_line_fred   = "darkolivegreen4",
  color_fill_bar    = "grey80",
  color_fill_fvuln  = "lightcoral",
  color_arrow_fvuln = "indianred4",
  size_line_fred    = 1.5,
  size_arrow_fvuln  = 1,
  check_input       = TRUE)

