Funções auxiliares para o labestData
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))
}
Please register or sign in to comment