por Carlos LESMES
Universidad Santo Tomás.
email: lesmes@member.ams.org
twitter: @carloslesmes3
Con el fin incentivar la escritura de artículos y de desarrollos estadísticos de los estudiantes y docentes en la faculatd de Estadística de la USTA, este post, muestra como crear documentos HTML. Escribiendo poco código se obtiene una agradable salida en la web. Inserte trozos, chunks, de código R y fórmulas de LaTeX en un documento HTML, no es necesario conocer HTML. Para hacer documentos HTML se necesita un manejo adecuado de la sintaxis, la que a veces es engorrosa. No hay que programar. También es una alternativa para quienes no gustan de LaTeX.
Este post muestra las características de R Markdown usando knitr en RStudio versión 0.96.33. RStudio incluye un botón de referencia rápida de Markdown. Botón MD al lado de Knit HTML. Estas herramientas permiten procesar datos e incluir los análisis en un reporte de forma similar al Sweave, el cual corre R dentro de un documento LaTeX, permitiendo el análisis de datos experimentales. Esta forma de trabajo y divulgación se puede ver en reproducible research.
Específicamente, se muestra como trabajar con R Markdown y con el paquete knitr de R en Rstudio y es un ejemplo básico de como manejar la salida y las gráficas de la consola de R usando R Markdown. Se utilizan algunas de las opciones de los chunks para controlar la entrada y la salida. Además se muestra cómo incluir fórmulas matemáticas con LaTeX y tablas, así como traer archivos de páginas web o del cada vez más popular freemium : dropbox.
Es muy útil que usted vea el código fuente junto con la salida. Así se pueden ver las opciones de los chunks y como se compila el documento.
(1) Instalar R.
(2) Instalar la última versión de RStudio (a la fecha de publicación la versión es la 0.96.33).
(3) Instalar la última version del paquete knitr.
(4) Abrir R Studio y vaya a File - New - R Markdown
(5) Pegar el código que encuentra en scriptMD
(6) Hacer clic en Knit HTML.
Para insertar un chunk de código R vaya a Chunks - Insert chunks, o manualmente, y se producirá el siguiente chunk:
```r
# inserte código r
```
El cual recibirá el código R. Veamos algunos ejemplos de opciones en los chunks. Rstudio autocompleta las opciones y presenta las alternativas de cada una de ellas. Con el siguiente chunk:
```r
a <- 5
b <- 7
a + b
```
se obtendrá el código y la salida:
a <- 5
b <- 7
a + b
## [1] 12
El siguiente chunk de código de R:
```r
x <- 1:6
y <- rexp(6, 5)
df <- data.frame(x, y)
df
summary(df)
```
producirá la entrada y la salida como sigue:
x <- 1:6
y <- rexp(6, 5)
df <- data.frame(x, y)
df
## x y
## 1 1 0.24147
## 2 2 0.19009
## 3 3 0.03745
## 4 4 0.25505
## 5 5 0.17753
## 6 6 0.06370
summary(df)
## x y
## Min. :1.00 Min. :0.0374
## 1st Qu.:2.25 1st Qu.:0.0921
## Median :3.50 Median :0.1838
## Mean :3.50 Mean :0.1609
## 3rd Qu.:4.75 3rd Qu.:0.2286
## Max. :6.00 Max. :0.2550
Dos chunks con opción warning=TRUE/FALSE, aqui se utilizó la opción echo=TRUE para que aparezca el código R.
```r
> x <- c(1, 2)
> y <- c(1, 2, 5)
> x + y
```
> x <- c(1, 2)
> y <- c(1, 2, 5)
> u <- pi
> x + y
## Warning: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1] 2 4 6
> x <- c(1, 2)
> y <- c(1, 2, 5)
> x + y
## [1] 2 4 6
Se pueden hacer opciones globlales, es decir, para todo el documento, con un chunk de la siguiente forma:
# todas las gráficas tendrán tamaño 5x5 pulgadas
opts_chunk$set(fig.width = 5, fig.height = 5)
También soporta código R en texto: por ejemplo el valor de u es 3.1416, 4 veces e es 10.8731 y 2+2 son 4. (vea el código fuente)
suppressPackageStartupMessages(library(googleVis))
library(ggplot2)
library(lattice)
Las imágenes generadas por knitr son guardadas en un archivo de imágenes. Sinembargo, también aparecen en la salida de HTML usando un data URI scheme. Esto significa que las puede pegar en un blog o en un foro de discusión y no tiene que preocuparse por encontrar un sitio para almecenar las imágenes, están incrustadas en el HTML.
Para obtener una gráfica muy sencilla:
```r
g <- rexp(40)
hist(g, main = "Título", xlab = "", ylab = "")
```
g <- rexp(40)
hist(g, main = "Título", xlab = "", ylab = "")
Otra gráfica con opción de tamaño: fig.height=3,fig.width=3 y prompt=TRUE, el siguiente código :
```r
> set.seed(456)
> x <- rexp(100, 1)
> y <- rexp(100, 1)
> plot(x, y)
```
> set.seed(456)
> x <- rexp(100, 1)
> y <- rexp(100, 1)
> plot(x, y)
Note que se incluyó el prompt de R.
Notese que a diferencia de Sweave, no se necesita escribir fig=TRUE, y recuerde que todos los chunks que se crean pertenecen a la misma sesión de R.
También, a difrencia de Sweave se pueden incluir varias gráficas en un chunk:
```r
boxplot(x, y)
plot(x, y)
```
boxplot(x, y)
plot(x, y)
ggplot2 y lattice.Aqui ggplot2 y lattice funcionan muy bien:
```r
qplot(x, y)
```
qplot(x, y)
```r
xyplot(y ~ x)
```
xyplot(y ~ x)
```r
qplot(hp, mpg, data = mtcars) + geom_smooth()
```
qplot(hp, mpg, data = mtcars) + geom_smooth()
Notese que a difrencia de Sweave no hay que imprimir los gráficos de lattice directamente.
Traiga archivos de la web, o de su dropbox a R y haga los análisis necesarios.
autos <- read.csv("http://dl.dropbox.com/s/880vobpzc9pskg1/autos.csv", head = TRUE,
sep = ";")
autos
## carros mulas camionetas
## 1 1 2 4
## 2 3 5 4
## 3 6 4 6
## 4 4 5 6
## 5 9 12 16
summary(autos)
## carros mulas camionetas
## Min. :1.0 Min. : 2.0 Min. : 4.0
## 1st Qu.:3.0 1st Qu.: 4.0 1st Qu.: 4.0
## Median :4.0 Median : 5.0 Median : 6.0
## Mean :4.6 Mean : 5.6 Mean : 7.2
## 3rd Qu.:6.0 3rd Qu.: 5.0 3rd Qu.: 6.0
## Max. :9.0 Max. :12.0 Max. :16.0
cacheAlgunos análisis pueden ser demorados en una primera corrida pero con esta opción las siguientes corridas son más rápidas. Por ejemplo algo como:
```r
for (j in 1:10000) {
lm((j + 1) ~ j)
}
```
Se pueden incluir ecuaciones usando la notación de LaTeX entre signos pesos, para ecuaciones en texto, o pares de signos pesos, para ecuaciones desplegadas.
Una ecuación en linea de texto como:
el siguiente modelo de regresión:\( y_i = \beta_{0} + \beta_{1} x_i + e_i \).
Y fórmulas desplegadas:
\[ \frac{sin(x)}{1+\cos(x)} \]
\[ e^{i\pi}+1=0 \]
\[ \int_{-\infty}^{\infty}\frac{1}{\sqrt{2\pi}}e^{-\frac{x^{2}}{2}} dx =1 \]
Vea el código fuente para ver como se produce la siguiente tabla:
| Día | Gastos | |
|---|---|---|
| 1 | Domingo | $ 20000 |
| 2 | Lunes | $ 15000 |
| 3 | Martes | $ 10000 |
Si le gusta este post visite mis publicaciones en misRpubs.

Si todos fueramos iguales, la Estadística no
existiría.
Estos ejemplos son tomados de la ayuda del paquete googleVis de R. Se muestran aqui para mostrar la versatilidad de R markdown.
T <- gvisTable(Exports, options = list(width = 200, height = 280))
G <- gvisGeoChart(Exports, locationvar = "Country", colorvar = "Profit", options = list(width = 360,
height = 280, dataMode = "regions"))
TG <- gvisMerge(T, G, horizontal = TRUE, tableOptions = "bgcolor=\"#CCCCCC\" cellspacing=10")
print(TG, "chart")
|
|
|
PopTable <- gvisTable(Population, options = list(width = 600, height = 300,
page = "enable"))
print(PopTable, "chart")
Vea más opciones de los chunks de Sweave y knitr en options.
citation("googleVis")
##
## To cite the googleVis package in publications use:
##
## Markus Gesmann and Diego de Castillo. Using the Google
## Visualisation API with R. The R Journal, 3(2):40-44, December
## 2011.
##
## A BibTeX entry for LaTeX users is
##
## @Article{,
## title = {googleVis: Interface between R and the Google Visualisation API},
## author = {Markus Gesmann and Diego de Castillo},
## journal = {The R Journal},
## year = {2011},
## volume = {3},
## number = {2},
## pages = {40--44},
## month = {December},
## url = {http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Gesmann+de~Castillo.pdf},
## }
citation("knitr")
##
## To cite package 'knitr' in publications use:
##
## Yihui Xie (2012). knitr: A general-purpose package for dynamic
## report generation in R. R package version 0.8.
## http://CRAN.R-project.org/package=knitr
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {knitr: A general-purpose package for dynamic report generation in R},
## author = {Yihui Xie},
## year = {2012},
## note = {R package version 0.8},
## url = {http://CRAN.R-project.org/package=knitr},
## }
Yihui Xie (2012). knitr: A general-purpose package for dynamic report generation in R. R package version 0.5.http://CRAN.R-project.org/package=knitr
Esta página y su contenido son responsabilidad del autor y no necesariamente representa los puntos de vista y opiniones de la Universidad Santo Tomas, Usta. La información se da sin garantía expresa de precisión y exactitud. El uso de la información de esta página pertenece al usuario.
Generado el día : Mar 18 sept 12:35:21 2012 - knitr