Skip to content
Snippets Groups Projects

Funções auxiliares para o labestData

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Walmes Marques Zeviani
    funcs.R 4.87 KiB
    #' @name tree
    #' @title Exibe o diretórios em forma de árvore
    #' @param dir É o path do diretório a ser exibido. Default é o diretório
    #'     de trabalho.
    #' @return Um arte ascii da estrutura do diretório.
    #' @author Walmes Zeviani
    #' @examples
    #' tree()
    #' tree("../")
    tree <- function(dir = ".") {
        if (Sys.info()["sysname"] == "Linux") {
            system(sprintf("tree %s -F --charset=ascii", dir))
        }
    }
    
    #-----------------------------------------------------------------------
    #' @name write2Rdoc
    #' @title Cria o esqueleto da documentação de datasets
    #' @param dataset Um objeto que seja vetor ou data.frame.
    #' @param source Uma string que seja a referência bibliografica do
    #'     dataset ou uma url.
    #' @param overwrite Se TRUE reescreve o arquivo se ele existir.
    #' @return Não retorna nada, apenas cria arquivos.
    #' @author Walmes Zeviani
    #' @examples
    #' write2Rdoc(iris)
    #' write2Rdoc(precip)
    write2Rdoc <- function(dataset, source = "???", overwrite = FALSE) {
        if (basename(getwd()) != "labestData") {
            warning("Você não está no diretório raíz do labestData.")
        }
        name <- deparse(substitute(dataset))
        cld <- class(dataset)[1]
        i <- cld == c("data.frame", "numeric", "integer")
        if (all(!i)) {
            stop("`dataset` de classe não apropriada para a função.")
        }
        mid <- switch(c(1, 2, 2)[i],
                      "1" = {
                          c(sprintf(paste(
                              "@format Um \\code{data.frame}",
                              "com %d observações e %d variáveis."),
                              nrow(dataset), ncol(dataset)),
                            "\\describe{", "",
                            rbind(sprintf("\\item{\\code{%s}}{  }",
                                          names(dataset)), ""),
                            "}")
                      },
                      "2" = {
                          sprintf(
                              "@format Um vetor com %d elementos.",
                              length(dataset))
                      })
        ctnt <- c(sprintf("@name %s", deparse(substitute(dataset))),
                  "@title",
                  "@description",
                  "@keywords",
                  strwrap(paste("@source", source), width = 72),
                  "@examples")
        ctnt <- append(ctnt, value = mid, after = 3)
        ctnt <- paste("#\'", ctnt)
        file <- sprintf("./R/%s.R", name)
        cat(ctnt, sep = "\n")
        cat(sprintf("Criando o esqueleto da documentação no arquivo %s.",
                    file),
            "Abra-o e complete com as informações.", sep = "\n")
        if (!file.exists(file) || overwrite) {
             cat(ctnt,  sep = "\n", file = file)
        }
        invisible()
    }
    
    #-----------------------------------------------------------------------
    #' @name write2txt
    #' @title Cria arquivo texto (tsv) do dataset
    #' @param dataset Um objeto que seja vetor ou data.frame.
    #' @param overwrite Se TRUE reescreve o arquivo se ele existir.
    #' @return Não retorna nada, apenas cria arquivos.
    #' @author Walmes Zeviani
    #' @examples
    #' write2txt(iris)
    #' write2txt(precip)
    write2txt <- function(dataset, overwrite = FALSE) {
        if (basename(getwd()) != "labestData") {
            warning("Você não está no diretório raíz do labestData.")
        }
        name <- deparse(substitute(dataset))
        cld <- class(dataset)[1]
        whatis <- cld == c("data.frame", "numeric", "integer")
        if (all(!whatis)) {
            stop("`dataset` de classe não reconhecida pela função.")
        }
        file <- sprintf("./data-raw/%s.txt", name)
        cat(sprintf("Criando txt do dataset %s em data-raw/.",
                    file),
            "Não edite na mão esse arquivo.", sep = "\n")
        if (!file.exists(file) || overwrite) {
            switch(c(1, 2, 2)[whatis],
                   "1" = {
                       write.table(x = dataset,
                                   file = file,
                                   quote = FALSE,
                                   row.names = FALSE,
                                   sep = "\t",
                                   fileEncoding = "utf-8")
                   },
                   "2" = {
                       writeLines(text = as.character(dataset),
                                  con = file)
                   })
        }
    }
    
    #-----------------------------------------------------------------------
    #' @name write2rda
    #' @title Cria arquivo rda do dataset
    #' @description É uma função wraper para a \code{devtools::use_data()}.
    #' @param dataset Um objeto que seja vetor ou data.frame.
    #' @param overwrite Se TRUE reescreve o arquivo se ele existir.
    #' @return Não retorna nada, apenas cria arquivos.
    #' @author Walmes Zeviani
    #' @examples
    #' write2txt(iris)
    #' write2txt(precip)
    write2rda <- function(dataset, overwrite = FALSE) {
        if (basename(getwd()) != "labestData") {
            warning("Você não está no diretório raíz do labestData.")
        }
        cmd <- sprintf("use_data(%s, overwrite = %d)",
                       deparse(substitute(dataset)),
                       overwrite)
        eval(parse(text = cmd))
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment