R/aleatorizar_time.R

Defines functions aleatorizar_time

Documented in aleatorizar_time

#' Aleatoriza um time válido no mercado atual.
#'
#' @return Data.frame com um time válido no mercado atual.
#' @param cartoletas Opcional. Custo máximo do time, em cartoletas. O padrão
#' é ilimitado.
#' @param formacao Opcional. Formação do time. O padrão é uma formação
#' aleatória.
#' @seealso \code{\link{pegar_mercado}} retorna o mercado.
#' @seealso \code{\link{login}} retorna um token de autenticação.
#' @seealso \code{\link{pegar_cartoletas}} retorna as cartoletas da conta.
#' @examples
#' time_valido <- aleatorizar_time()
#'
#' login(email, conta) %>%
#'  escalar_time(time_valido)
#' @import httr
#' @import jsonlite
#' @import magrittr
#' @import dplyr
#' @import purrr
#' @export
aleatorizar_time <- function(cartoletas = Inf,
                             formacao = sample(1:7, 1)) {
  valido <- FALSE
  escolhas <- pegar_mercado()
  while (!valido) {
    time <-
      escolhas %>%
      arrange(posicao_id) %>%
      group_by(posicao_id) %>%
      nest() %>%
      mutate(
        n_amostra = converter_formacao(formacao),
        amostra = map2(data, n_amostra, sample_n)
      ) %>%
      select(posicao_id, amostra) %>%
      unnest()
    custo <- sum(pull(time, preco_num))
    valido <- custo <= cartoletas
  }
  time %>%
    transmute(
      id = atleta_id,
      posicao = posicao_id,
      capitao = sample(c(rep(FALSE, 11), TRUE))
    )
}
assuncaolfi/cartolr documentation built on July 12, 2019, 4:16 a.m.