Nota: documento construido con base en el video de Julio Trenceti Criação de pacotes em R.
devtools
devtools
roxygen2
testthat
knitr
dev
de devtools
devtools
devtools::install_github("hadley/devtools")
Rtools
XCode
r-base-dev
sudo apt-get install r-base-dev
devtools:has_devel()
print(devtools::has_devel())
## [1] TRUE
devtools::setup()
: cargar la configuración básica de un paquete en R
devtools::numeric_version()
)Imports
y Suggests
con usethis::use_package("xxx", type = "xxxx")
Imports
: bibliotecas necesarias o esencialesSuggests
: bibliotecas sugeridasdevtools::load_all()
)library()
, require()
devtools::document()
#'
@tag
(ej. @param)#' Valor p en múltiples t.test
#'
#' Esta función genera una población de números aleatorios con
#' distribución normal y con base en ella se realizan múltiples
#' muestreos; luego se emplea el t.test para obtener el número de veces que
#' el contraste de hipótesis genera conclusiones erradas.
#'
#' Detalles...
#'
#' @param n tamaño poblacional (por defecto igual a 1000)
#' @param gp tamaño muestral (por defecto igual a 20)
#' @param cp número de comparaciones (por defecto igual a 100)
#' @param nc nivel de confianza (por defecto igual a 0.95)
#'
#' @return un vector con los valores p obtenidos para las comparaciones
#' establecidas.
#'
#' @examples
#' valp(n = 100, gp = 5, cp = 10, nc = 0.90)
#' valp(n = 100, gp = 10, cp = 10, nc = 0.95)
#' valp(n = 100, gp = 15, cp = 10, nc = 0.99)
#'
#' @export
valp <- function(n = 1000, gp = 20, cp = 100, nc = 0.95){
pob = rnorm(n = n)
g1 = list()
vp = c()
for (i in 1:cp) {
g1[[i]] = sample(pob, size = gp)
vp[i] = t.test(x = g1[[i]], alternative = "two.sided", conf.level = nc,
mu = 0)$p.value
}
return(vp)
}
usethis::use_vignette("nombre")
para crear viñeta (con plantilla RMarkdown)testthat
)testthat
de Hadley.devtools::use:testthat()
devtools::test
sobre un nuevo Script que se almacena dentro de la carpeta testthat
.library(Pruebas)
context("Longitud del vector resultante")
test_that("Prueba la longitud del vector", {
expect_equal(length(valp()), 100)
})
@export
para hacer que la función quede disponible para el usuario a través de ::
@import
para especificar que dicha función (la de su paquete) necesita de otra función que pertenece a otra biblioteca.#' Valor p en múltiples t.test
#'
#' Esta función genera una población de números aleatorios con
#' distribución normal y con base en ella se realizan múltiples
#' muestreos; luego se emplea el t.test para obtener el número de veces que
#' el contraste de hipótesis genera conclusiones erradas.
#'
#' Detalles...
#'
#' @param n tamaño poblacional (por defecto igual a 1000)
#' @param gp tamaño muestral (por defecto igual a 20)
#' @param cp número de comparaciones (por defecto igual a 100)
#' @param nc nivel de confianza (por defecto igual a 0.95)
#'
#' @return un vector con los valores p obtenidos para las comparaciones
#' establecidas.
#'
#' @examples
#' valp(n = 100, gp = 5, cp = 10, nc = 0.90)
#' valp(n = 100, gp = 10, cp = 10, nc = 0.95)
#' valp(n = 100, gp = 15, cp = 10, nc = 0.99)
#'
#' @export
valp <- function(n = 1000, gp = 20, cp = 100, nc = 0.95){
pob = rnorm(n = n)
g1 = list()
vp = c()
for (i in 1:cp) {
g1[[i]] = sample(pob, size = gp)
vp[i] = t.test(x = g1[[i]], alternative = "two.sided", conf.level = nc,
mu = 0)$p.value
}
return(vp)
}
#' Gráfico de valores p en t.test
#'
#' Gráfico de valores p obtenido con valp.
#'
#' @param x vector de valores p con la función \code{\link{valp}}
#'
#' @examples
#' grafvp(valp()) # 100 comparaciones por defecto
#' grafvp(valp(cp = 10)) # modificando el número de comparaciones
#'
#' @importFrom stats rnorm t.test
#'
#' @export
#' @import ggplot2
grafvp <- function(x) {
df = data.frame(index = c(1:length(x)), valorP = x)
g = ggplot(data = df, aes(x = index, y = valorP)) +
geom_point() +
geom_hline(yintercept = 0.01, lwd = 0.5, color = "firebrick", lty = 2) +
geom_hline(yintercept = 0.05, lwd = 0.5, color = "dodgerblue4", lty = 2) +
geom_hline(yintercept = 0.10, lwd = 0.5, color = "green4", lty = 2) +
labs(x = "", y = "Valor p",
title = paste0("Valores p para ", length(x), " comparaciones",
sep = ""),
caption = "Línea roja: 0.01\nLínea azul: 0.05\nLínea verde: 0.10") +
theme_linedraw()
return(g)
}
devtools::use_data()
devtools::use_data_raw()
Rcpp
devtools::load_all()
devtools::check()
devtools::check()
se obtienen:
Finalmente, sin errores, el paquete podrá ser almacenado en Github.
devtools::install_github("Edimer/Pruebas", force = TRUE)
## Running /usr/lib/R/bin/R CMD INSTALL \
## /tmp/RtmpkaTb3W/devtools2f0d4a683f73/Edimer-Pruebas-839cd59 \
## '--library=/home/edimer/R/x86_64-pc-linux-gnu-library/3.4' \
## --install-tests
## * installing *source* package ‘Pruebas’ ...
## ** R
## ** tests
## ** preparing package for lazy loading
## ** help
## *** installing help indices
## ** building package indices
## ** installing vignettes
## ** testing if installed package can be loaded
## * DONE (Pruebas)
valp()
: en este caso se realizan 100 comparaciones (nivel de confianza del 95%) para muestras de tamaño 1000, obtenidas de una población (tamaño de 1 millón) con distribución normal estándar (media cero y desviación igual a 1).library(Pruebas)
valores <- valp(n = 1000000, gp = 1000, cp = 100, nc = 0.95)
grafvp()
: se grafican los 100 valores p obtenidos en el paso anterior (almacenado en el vector valores
).set.seed(1000)
library(ggplot2)
grafvp(valores)