Vous êtes sur la page 1sur 82

CURSO DE R STUDIO

Leccin 1

Selection: 1

| Selecciona una leccin por favor, o teclea 0 para volver al men del
curso.

1: Obtener Ayuda
2: Objetos Tipos de Datos y Operaciones Basicas
3: Subconjuntos de Datos
4: Leer y escribir Datos
5: Funciones
6: Funciones apply
7: Graficacion
8: Parametros en el Sistema de Graficos
9: Colores en el Sistema de Graficos
10: Graficacion con texto y notacion matematica
11: Creacion de Graficas en 3D
12: Expresiones regulares
13: Graficacion con ggplot2
14: Simulacion

Selection: 1
|
| 0%

| En esta leccin conocers las principales herramientas que R tiene p


ara obtener
| ayuda.

...

|====
| 6%

| La primera herramienta que puedes usar para obtener ayuda es help.st


art(). En ella
| encontrars un men de recursos, entre los cuales se encuentran manu
ales,
| referencias y dems material para comenzar a aprender R.

...

|=========
| 12%

| Para usar help.start() escribe en la lnea de comandos help.start().


Prubalo
| ahora:

>
> help.start()
If nothing happens, you should open
http://127.0.0.1:10290/doc/html/index.html yourself

| Excelente!
|=============
| 18%

| R incluye un sistema de ayuda que te facilita obtener informacin ac


erca de las
| funciones de los paquetes instalados. Para obtener informacin acerc
a de una
| funcin, por ejemplo de la funcin print(), debes escribir ?print en
la lnea de
| comandos.

...

|==================
| 24%

| Ahora es tu turno, introduce ?print en la lnea de comandos.

> ?print

| Acertaste!

|======================
| 29%

| Como puedes observar ? te muestra en la ventana Help una breve descr


ipcin de la
| funcin, de cmo usarla, as como sus argumentos, etctera.

...

|==========================
| 35%

| Asimismo, puedes usar la funcin help(), la cual es un equivalente d


e ?. Al
| utilizar help(), usars como argumento el nombre de la funcin entre
comillas, por
| ejemplo, help("print").

...

|===============================
| 41%

| Para buscar ayuda sobre un operador, ste tiene que encontrarse entr
e comillas
| inversas. Por ejemplo, si buscas informacin del operador +, debers
escribir
| help(`+`) o ?`+` en la lnea de comandos.

...

|===================================
| 47%

| Otra herramienta disponible es la funcin apropos(), la cual recibe


una cadena
| entre comillas como argumento y te muestra una lista de todas las fu
nciones que
| contengan esa cadena. Intntalo: escribe apropos("class") en la lne
a de comandos.

> apropos("class")
[1] ".__C__classGeneratorFunction" ".__C__className"
[3] ".__C__classPrototypeDef" ".__C__classRepresentation"
[5] ".__C__ClassUnionRepresentation" ".__C__envRefClass"
[7] ".__C__localRefClass" ".__C__oldClass"
[9] ".__C__refClass" ".__C__refClassRepresentation"
[11] ".__C__SClassExtension" ".__C__SuperClassMethod"
[13] ".cache_class" ".checkMFClasses"
[15] ".classEnv" ".MFclass"
[17] ".OldClassesList" ".rs.getR6ClassSymbols"
[19] ".rs.getSetRefClassSymbols" ".rs.getSingleClass"
[21] ".rs.rnb.engineToCodeClass" ".rs.rpc.get_set_class_slots"
[23] ".rs.rpc.get_set_ref_class_call" ".selectSuperClasses"
[25] ".valueClassTest" "all.equal.envRefClass"
[27] "assignClassDef" "class"
[29] "class<-" "classesToAM"
[31] "classLabel" "classMetaName"
[33] "className" "completeClassDefinition"
[35] "completeSubclasses" "data.class"
[37] "findClass" "getAllSuperClasses"
[39] "getClass" "getClassDef"
[41] "getClasses" "getClassName"
[43] "getClassPackage" "getRefClass"
[45] "getSubclasses" "insertClassMethods"
[47] "isClass" "isClassDef"
[49] "isClassUnion" "isSealedClass"
[51] "isVirtualClass" "isXS3Class"
[53] "makeClassRepresentation" "makePrototypeFromClassDef"
[55] "multipleClasses" "namespaceImportClasses"
[57] "nclass.FD" "nclass.scott"
[59] "nclass.Sturges" "newClassRepresentation"
[61] "oldClass" "oldClass<-"
[63] "promptClass" "removeClass"
[65] "resetClass" "S3Class"
[67] "S3Class<-" "sealClass"
[69] "selectSuperClasses" "setClass"
[71] "setClassUnion" "setOldClass"
[73] "setRefClass" "showClass"
[75] "superClassDepth" "unclass"

| Bien hecho!

|========================================
| 53%

| Tambin puedes obtener ejemplos del uso de funciones con la funcin


example(). Por
| ejemplo, escribe example("read.table").

> example("read.table")

rd.tbl> ## using count.fields to handle unknown maximum number of fiel


ds
rd.tbl> ## when fill = TRUE
rd.tbl> test1 <- c(1:5, "6,7", "8,9,10")

rd.tbl> tf <- tempfile()

rd.tbl> writeLines(test1, tf)


rd.tbl> read.csv(tf, fill = TRUE) # 1 column
X1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

rd.tbl> ncol <- max(count.fields(tf, sep = ","))

rd.tbl> read.csv(tf, fill = TRUE, header = FALSE,


rd.tbl+ col.names = paste0("V", seq_len(ncol)))
V1 V2 V3
1 1 NA NA
2 2 NA NA
3 3 NA NA
4 4 NA NA
5 5 NA NA
6 6 7 NA
7 8 9 10

rd.tbl> unlink(tf)

rd.tbl> ## "Inline" data set, using text=


rd.tbl> ## Notice that leading and trailing empty lines are auto-trimm
ed
rd.tbl>
rd.tbl> read.table(header = TRUE, text = "
rd.tbl+ a b
rd.tbl+ 1 2
rd.tbl+ 3 4
rd.tbl+ ")
a b
1 1 2
2 3 4

| Lo ests haciendo muy bien!

|============================================
| 59%

| Con eso tendrs una idea de lo que puedes hacer con esta funcin.

...

|=================================================
| 65%

| R te permite buscar informacin sobre un tema usando ??. Por ejemplo


, escribe
| ??regression en la lnea de comandos.

> ??regression

| Eres bastante bueno!


|=====================================================
| 71%

| Esta herramienta es muy til si no recuerdas el nombre de una funci


n, ya que R te
| mostrar una lista de temas relevantes en la venta Help. Anlogament
e, puedes usar
| la funcin help.search("regression").

...help.search("regression")

|=========================================================
| 76%

| Otra manera de obtener informacin de ayuda sobre un paquete es usar


la opcin
| help para el comando library, con lo cual tendrs informacin ms co
mpleta. Un
| ejemplo es library(help="stats").

...library(help="stats")

|==============================================================
| 82%

| Algunos paquetes incluyen vietas. Una vieta es un documento corto


que describe
| cmo se usa un paquete. Puedes ver una vietas usando la funcin vig
nette().
| Prubalo: escribe vignette("tests") en la lnea de comandos.

> vignette("tests")

| Excelente!

|==================================================================
| 88%

| Por ltimo si deseas ver la lista de vietas disponibles puedes hace


rlo usando el
| comando vignette() con los parntesis vacos.

...vignette()

|===================================================================
==== | 94%

| Es MUY IMPORTANTE que sepas que durante todo el curso en swirl, pued
es hacer uso
| de las funciones help() o ? cuando lo desees, incluso si estas en me
dio de una
| leccin.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?
1: No
2: Si

LECCION 3
Selection: 3
|
| 0%

| En esta leccin conocers las maneras de acceder a las estructuras d


e datos en el
| lenguaje R.

...

|=
| 2%

| R tiene una sintaxis especializada para acceder a las estructuras de


datos.

...

|===
| 4%

| T puedes obtener un elemento o mltiples elementos de una estructur


a de datos
| usando la notacin de indexado de R.

...

|====
| 5%

| R provee diferentes maneras de referirse a un elemento (o conjunto d


e elementos)
| de un vector. Para probar estas diferentes maneras crea una variable
llamada
| 'mi_vector' que contenga un vector con los nmeros enteros del 11 al
30. Recuerda
| que puedes usar el operador secuencia ':'.

> mi_vector <- vector("numeric",11:30)


Error in vector("numeric", 11:30) : invalid 'length' argument
> mi_vector <- vector("numeric",length11:30)
Error in vector("numeric", length11:30) : object 'length11' not found
> mi_vector <- vector("numeric",length=11:30)
Error in vector("numeric", length = 11:30) : invalid 'length' argument
> mi_vector <- c(11:30)

| Lo ests haciendo muy bien!

|=====
| 7%

| Y ahora ve su contenido.
>
> mi_vector
[1] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

| Eres el mejor!

|=======
| 9%

| La manera ms comn de buscar un elemento en R es por medio de un ve


ctor numrico.

...

|========
| 11%

| Puedes buscar elementos por posicin en un vector usando la siguient


e notacin:
| x[s], donde 'x' es un vector del cual deseas obtener elementos y 's'
es un segundo
| vector representando el conjunto de ndices de elementos que te gust
ara
| consultar.

...

|=========
| 12%

| Debes saber que en R las posiciones de los elementos de un vector co


mienzan en 1 y
| no en 0, como en lenguajes de programacin como Java o C.

...

|===========
| 14%

| Puedes usar un vector entero para buscar un simple elemento o mltip


les.

...

|============
| 16%

| Por ejemplo, obten el tercer elemento de 'mi_vector'.

> x[s]
Error: object 'x' not found
> mi_vector[3]
[1] 13

| Excelente!

|=============
| 18%

| Ahora obten los primeros cinco elementos de 'mi_vector'.

>
> mi_vector[1:5]
[1] 11 12 13 14 15

| Todo ese trabajo est rindiendo frutos!

|==============
| 19%

| No necesariamente los ndices deben ser consecutivos. Ingresa mi_vec


tor[c(4,6,13)]
| en la lnea de comandos.

> mi_vector[c(4,6,13)]
[1] 14 16 23

| Esa es la respuesta que estaba buscando.

|================
| 21%

| Asimismo, no es necesario que los ndices se encuentren ordenados. I


ngresa
| mi_vector[c(6,13,4)] en la lnea de comandos.

> mi_vector[c(6,13,4)]
[1] 16 23 14

| Excelente!

|=================
| 23%

| Como un caso especial, puedes usar la notacin [[]] para referirte a


un solo
| elemento. Ingresa mi_vector[[3]] en la lnea de comandos.

> mi_vector[[3]]
[1] 13

| Lo ests haciendo muy bien!

|==================
| 25%

| La notacin [[]] funciona de la misma manera que la notacin [] en e


ste caso.

...

|====================
| 26%

| Tambin puedes usar enteros negativos para obtener un vector que con
sista en todos
| los elementos, excepto los elementos especificados. Excluye los elem
entos 9:15, al
| especificar -9:-15.

> mi_vector[-9:-15]
[1] 11 12 13 14 15 16 17 18 26 27 28 29 30

| Eso es correcto!
|=====================
| 28%

| Como alternativa a indexar con un vector de enteros, puedes indexar


a travs de un
| vector lgico.

...

|======================
| 30%

| Como ejemplo crea un vector lgico de longitud 10 con valores lgico


s alternados,
| TRUE y FALSE (rep(c(TRUE,FALSE),10)), y consulta con l
| mi_vector[rep(c(TRUE,FALSE),10)].

> mi_vector[rep(c(TRUE,FALSE),10)]
[1] 11 13 15 17 19 21 23 25 27 29

| Bien hecho!

|========================
| 32%

| Como podrs notar, lo que ocurri fue que indexaste nicamente los e
lementos en
| las posiciones impares, puesto que creaste un vector con elementos T
RUE en las
| posiciones impares y FALSE en las pares.

...

|=========================
| 33%

| El vector ndice no necesita ser de la misma longitud que el vector


a indexar. R
| repetir el vector ms corto y regresar los valores que cacen. Ingr
esa
| mi_vector[c(FALSE,FALSE,TRUE)] en la linea de comandos.

> mi_vector[c(FALSE,FALSE,TRUE)]
[1] 13 16 19 22 25 28

| Eres bastante bueno!

|==========================
| 35%

| Notars que ahora indexaste los ndices de los elementos mltiplos d


e 3.

...

|============================
| 37%

| Es muy til calcular un vector lgico de un mismo vector. Por ejempl


o, busca
| elementos ms grandes que 20. Ingresa en la lnea de comandos mi_vec
tor > 20.

> mi_vector > 20


[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
TRUE TRUE
[14] TRUE TRUE TRUE TRUE TRUE TRUE TRUE

| Todo ese trabajo est rindiendo frutos!

|=============================
| 39%

| Y ahora indexa 'mi_vector' usando el vector previamente calculado. I


ngresa
| mi_vector[(mi_vector > 20)] en la lnea de comandos.

> mi_vector[(mi_vector > 20)]


[1] 21 22 23 24 25 26 27 28 29 30

| Excelente trabajo!

|==============================
| 40%

| Tambin puedes usar esta notacin para extraer partes de una estruct
ura de datos
| multidimensional.

...

|================================
| 42%

| Un arreglo es un vector multidimensional. Vectores y arreglos se alm


acenan de la
| misma manera internamente, pero un arreglo se muestra diferente y se
accede
| diferente.

...

|=================================
| 44%

| Para crear un arreglo de dimensin 3x3x2 y de contenido los nmeros


del 1 al 18 y
| guardarlo en la variable 'mi_arreglo', ingresa mi_arreglo <-
| array(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18),dim=c(3,3,2))
en la lnea de
| comandos.

> mi_arreglo <- array(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18),


dim=c(3,3,2))

| Lo ests haciendo muy bien!

|==================================
| 46%

| Ahora ve el contenido de la variable 'mi_arreglo'.


> 'mi_arreglo
+
+ mi_arreglo
+
+
+
+
+
+ exit
+
+ salir
+
+
+
+
+
+
+
+

, , 1

[,1] [,2] [,3]


[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

, , 2

[,1] [,2] [,3]


[1,] 10 13 16
[2,] 11 14 17
[3,] 12 15 18

| Eso es trabajo bien hecho!

|====================================
| 47%

| R tiene una manera muy limpia de referirse a parte de un arreglo. Se


especifican
| ndices para cada dimensin, separados por comas. Ingresa mi_arreglo
[1,3,2] en la
| lnea de comandos.

> mi_arreglo[1,3,2]
[1] 16

| Es asombroso!

|=====================================
| 49%

| Asimismo, puedes ingresar mi_arreglo[1:2,1:2,1] en la lnea de coman


dos.
| Intntalo!

> mi_arreglo[1:2,1:2,1]
[,1] [,2]
[1,] 1 4
[2,] 2 5
| Todo ese trabajo est rindiendo frutos!

|======================================
| 51%

| Una matriz es simplemente un arreglo bidimensional. Ahora crea una m


atriz con 3
| renglones y 3 columnas con los nmeros enteros del 1 al 9 y gurdala
en la
| variable 'mi_matriz'.

> mi_matriz <- matrix(data= 1:9,nrow = 3, ncol = 3)

| Todo ese trabajo est rindiendo frutos!

|=======================================
| 53%

| Al igual que con los arreglos, para obtener todos los renglones o co
lumnas de una
| dimensin de una matriz, simplemente omite los ndices.

...

|=========================================
| 54%

| Por ejemplo, si quisiras solo el primer rengln de 'mi_matriz', bas


ta con
| ingresar mi_matriz[1,] en la lnea de comandos. Intntalo!

> mi_matriz[1,]
[1] 1 4 7

| Lo has logrado! Buen trabajo!

|==========================================
| 56%

| Ahora obtn solo la primera columna!

> mi_matriz[,1]
[1] 1 2 3

| Eso es trabajo bien hecho!

|===========================================
| 58%

| Tambin puedes referirte a un rango de renglones. Ingresa mi_matriz[


2:3,] en la
| lnea de comandos.

> mi_matriz[2:3,]
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9

| Excelente trabajo!
|=============================================
| 60%

| O referirte a un conjunto no contiguo de renglones. Ingresa mi_matri


z[c(1,3),] en
| la lnea de comandos.

> Ingresa mi_matriz[c(1,3),]


Error: unexpected symbol in "Ingresa mi_matriz"
> mi_matriz[c(1,3),]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 3 6 9

| Lo ests haciendo muy bien!

|==============================================
| 61%

| En los ejemplos de arriba solo has visto estructuras de datos basada


s en un solo
| tipo. Recuerda que R tiene un tipo de datos incorporado para la mezc
la de objetos
| de diferentes tipos, llamados listas.

...

|===============================================
| 63%

| Debes de saber que en R las listas son sutilmente diferentes de las


listas en
| muchos otros lenguajes. Las listas en R contienen una seleccin hete
rognea de
| objetos. Puedes nombrar cada componente en una lista.

...

|=================================================
| 65%

| Los elementos en una lista pueden ser referidos por su ubicacin o p


or su nombre.

...

|==================================================
| 67%

| Ingresa este ejemplo de una lista con cuatro componentes nombrados c


arro <-
| list(color="rojo", nllantas=4, marca= "Renault", ncilindros=4).

> carro <-list(color="rojo", nllantas=4, marca= "Renault", ncilindros=


4)

| Muy bien!

|===================================================
| 68%
| T puedes acceder a los elementos de una lista de mltiples formas.
Puedes usar la
| misma notacin que usaste con los vectores.

...

|=====================================================
| 70%

| Y adems puedes indexar un elemento por nombre usando la notacin $.


Por ejemplo,
| ingresa carro$color en la lnea de comandos.

> carro$color
[1] "rojo"

| Tu dedicacin es inspiradora!

|======================================================
| 72%

| Adems, puedes usar la notacin [] para indexar un conjunto de eleme


ntos por
| nombre. Ingresa carro[c("ncilindros","nllantas")] en la lnea de com
andos.

> carro[c("ncilindros","nllantas")]
$ncilindros
[1] 4

$nllantas
[1] 4

| Eso es correcto!

|=======================================================
| 74%

| Tambin puedes indexar por nombre usando la notacin [[]] cuando sel
eccionas un
| simple elemento. Por ejemplo, ingresa carro[["marca"]] en la lnea d
e comandos.

> carro[["marca"]]
[1] "Renault"

| Eso es trabajo bien hecho!

|=========================================================
| 75%

| Hasta puedes indexar por nombre parcial usando la opcin exact=FALSE


. Ingresa
| carro[["mar",exact=FALSE]] en la lnea de comandos.

> carro[["mar",exact=FALSE]]
[1] "Renault"

| Sigue trabajando de esa manera y llegars lejos!


|==========================================================
| 77%

| Ahora crea la siguiente lista: camioneta <- list(color="azul", nllan


tas=4, marca=
| "BMW", ncilindros=6).

> camioneta <- list(color="azul", nllantas=4, marca="BMW", ncilindros=


6)

| Mantn este buen nivel!

|===========================================================
| 79%

| Algunas veces una lista ser una lista de listas. Ingresa cochera <-
list(carro,
| camioneta).

> cochera <- list(carro,camioneta)

| Esa es la respuesta que estaba buscando.

|=============================================================
| 81%

| Ahora ve el contenido de 'cochera'.

> cochera
[[1]]
[[1]]$color
[1] "rojo"

[[1]]$nllantas
[1] 4

[[1]]$marca
[1] "Renault"

[[1]]$ncilindros
[1] 4

[[2]]
[[2]]$color
[1] "azul"

[[2]]$nllantas
[1] 4

[[2]]$marca
[1] "BMW"

[[2]]$ncilindros
[1] 6

| Esa es la respuesta que estaba buscando.

|==============================================================
| 82%
| T puedes usar la notacin [[]] para referirte a un elemento en este
tipo de
| estructura de datos. Para hacer esto usa un vector como argumento. R
iterar a
| travs de los elementos en el vector referenciando sublistas.

...

|===============================================================
| 84%

| Ingresar cochera[[c(2, 1)]] en la lnea de comandos.

> cochera[[c(2, 1)]]


[1] "azul"

| Eso es correcto!

|================================================================
| 86%

| Recuerda que los data frames son una lista que contiene mltiples ve
ctores
| nombrados que tienen la misma longitud. A partir de este momento usa
rs el data
| frame cars del paquete datasets. No te preocupes, este paquete viene
cargado por
| defecto.

...

|==================================================================
| 88%

| Los datos que conforman al data frame cars son un conjunto de observ
aciones
| tomadas en la dcada de 1920; estas observaciones describen la veloc
idad (mph) de
| algunos carros y la distancia (ft) que les tom parar.

...

|===================================================================
| 89%

| Ve el contenido del data frame cars. Ingresa cars en la lnea de com


andos.

> cars
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
7 10 18
8 10 26
9 10 34
10 11 17
11 11 28
12 12 14
13 12 20
14 12 24
15 12 28
16 13 26
17 13 34
18 13 34
19 13 46
20 14 26
21 14 36
22 14 60
23 14 80
24 15 20
25 15 26
26 15 54
27 16 32
28 16 40
29 17 32
30 17 40
31 17 50
32 18 42
33 18 56
34 18 76
35 18 84
36 19 36
37 19 46
38 19 68
39 20 32
40 20 48
41 20 52
42 20 56
43 20 64
44 22 66
45 23 54
46 24 70
47 24 92
48 24 93
49 24 120
50 25 85

| Excelente!

|===================================================================
= | 91%

| Te puedes referir a los elementos de un data frame (o a los elemento


s de una
| lista) por nombre usando el operador $. Ingresa cars$speed en la ln
ea de
| comandos.

> cars$speed
[1] 4 4 7 7 8 9 10 10 10 11 11 12 12 12 12 13 13 13 13 14 14 14
14 15 15 15 16
[28] 16 17 17 17 18 18 18 18 19 19 19 20 20 20 20 20 22 23 24 24 24 24
25

| Perseverancia es la respuesta.

|===================================================================
=== | 93%
| Supn que deseas saber a qu velocidad iban los carros a los que les
tom ms de
| 100 pies (ft) frenar.

...

|===================================================================
==== | 95%

| Una manera de encontrar valores especficos en un data frame es al u


sar un vector
| de valores booleanos para especificar cul o cules elementos regres
ar de la
| lista. La manera de calcular el vector apropiado es as: cars$dist>1
00.
| Intntalo!

> cars$dist>100
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[40] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

| Esa es la respuesta que estaba buscando.

|===================================================================
===== | 96%

| Entonces puedes usar ese vector para referirte al elemento correcto.


Ingresa
| cars$speed[cars$dist>100] en la lnea de comandos.

> cars$speed[cars$dist>100]
[1] 24

| Excelente trabajo!

|===================================================================
======= | 98%

| Ahora ya sabes cmo acceder a las estructuras de datos.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: No
2: Si
Leccion 4

Selection: 4
|
| 0%

| En esta leccin conocers cmo cargar conjuntos de datos en R y guar


dar estos
| conjuntos desde R.

...

|==
| 2%

| Una de las mejores cosas acerca de R es lo fcil que es aadir infor


macin desde
| otros programas.

...

|===
| 4%

| R puede importar conjuntos de datos desde archivos de texto, otros s


oftwares de
| estadstica y hasta hojas de clculo. No es necesario tener una copi
a local del
| archivo. T puedes especificar la ubicacin del archivo desde una ur
l y R buscar
| el archivo en Internet.

...

|=====
| 7%

| La mayora de los archivos que contienen informacin tienen un forma


to similar.
| Generalmente cada lnea del archivo representa una observacin o reg
istro, por lo
| que cada lnea contiene un conjunto de diferentes variables asociada
s con la
| observacin.

...

|=======
| 9%

| Algunas veces, diferentes variables son separadas por un carcter es


pecial,
| llamado delimitador. Otra veces las variables son diferenciadas por
su ubicacin
| en cada lnea.

...

|========
| 11%
| En esta leccin trabajars con el archivo inmigintnalpry.csv el cual
contiene la
| estimacin de personas provenientes de otros pases que llegan a cad
a uno de los
| estados de Mxico. Si tienes suerte, el archivo se mostrar en algn
editor; de lo
| contrario bscalo en el subdirectorio swirl_temp de tu directorio de
trabajo y
| velo en una aplicacin separada.

(Se ha copiado el archivo inmigintnalpry.csv a la ruta C:/Users/rober/


Documents/swirl_temp/inmigintnalpry.csv ).
...

|==========
| 13%

| Como podrs notar el primer rengln del archivo contiene los nombres
de las
| columnas, en este caso los nombres de cada una de las variables de l
a observacin;
| adems, el archivo tiene delimitada cada variable de la observacin
por una coma.

...

|===========
| 15%

| Para cargar este archivo a R, debes especificar que el primer rengl


n contiene los
| nombres de las columnas y que el delimitador es una coma.

...

|=============
| 17%

| Para hacer esto necesitars especificar los argumentos header y sep


en la funcin
| read.table. Header para especificar que el primer rengln contiene l
os nombres de
| la columnas (header=TRUE) y sep para especificar el delimitador (sep
=",").

...

|===============
| 20%

| Importa el archivo inmigintnalpry.csv! Ingresa datos <-


| read.table("swirl_temp/inmigintnalpry.csv", header=TRUE, sep=",", fi
leEncoding =
| "latin1") en la lnea de comandos.

renglon ao ent id_ent cvegeo sexo edad in


migintnal
1 1 1990 Aguascalientes 1 1 Hombres 0 6.0
00000e+00
2 2 1990 Aguascalientes 1 1 Hombres 1 1.0
00000e+01
3 3 1990 Aguascalientes 1 1 Hombres 2 1.3
00000e+01
4 4 1990 Aguascalientes 1 1 Hombres 3 1.2
00000e+01
5 5 1990 Aguascalientes 1 1 Hombres 4 1.0
00000e+01
6 6 1990 Aguascalientes 1 1 Hombres 5 8.0
00000e+00
7 7 1990 Aguascalientes 1 1 Hombres 6 8.0
00000e+00
8 8 1990 Aguascalientes 1 1 Hombres 7 7.0
00000e+00
9 9 1990 Aguascalientes 1 1 Hombres 8 6.0
00000e+00
10 10 1990 Aguascalientes 1 1 Hombres 9 4.0
00000e+00
11 11 1990 Aguascalientes 1 1 Hombres 10 3.0
00000e+00
12 12 1990 Aguascalientes 1 1 Hombres 11 3.0
00000e+00
13 13 1990 Aguascalientes 1 1 Hombres 12 3.0
00000e+00
14 14 1990 Aguascalientes 1 1 Hombres 13 2.0
00000e+00
15 15 1990 Aguascalientes 1 1 Hombres 14 2.0
00000e+00
16 16 1990 Aguascalientes 1 1 Hombres 15 2.0
00000e+00
17 17 1990 Aguascalientes 1 1 Hombres 16 2.0
00000e+00
18 18 1990 Aguascalientes 1 1 Hombres 17 2.0
00000e+00
19 19 1990 Aguascalientes 1 1 Hombres 18 2.0
00000e+00
20 20 1990 Aguascalientes 1 1 Hombres 19 3.0
00000e+00
21 21 1990 Aguascalientes 1 1 Hombres 20 4.0
00000e+00
22 22 1990 Aguascalientes 1 1 Hombres 21 5.0
00000e+00
23 23 1990 Aguascalientes 1 1 Hombres 22 6.0
00000e+00
24 24 1990 Aguascalientes 1 1 Hombres 23 6.0
00000e+00
25 25 1990 Aguascalientes 1 1 Hombres 24 7.0
00000e+00
26 26 1990 Aguascalientes 1 1 Hombres 25 8.0
00000e+00
27 27 1990 Aguascalientes 1 1 Hombres 26 8.0
00000e+00
28 28 1990 Aguascalientes 1 1 Hombres 27 9.0
00000e+00
29 29 1990 Aguascalientes 1 1 Hombres 28 9.0
00000e+00
30 30 1990 Aguascalientes 1 1 Hombres 29 9.0
00000e+00
31 31 1990 Aguascalientes 1 1 Hombres 30 9.0
00000e+00
32 32 1990 Aguascalientes 1 1 Hombres 31 8.0
00000e+00
33 33 1990 Aguascalientes 1 1 Hombres 32 7.0
00000e+00
34 34 1990 Aguascalientes 1 1 Hombres 33 7.0
00000e+00
35 35 1990 Aguascalientes 1 1 Hombres 34 6.0
00000e+00
36 36 1990 Aguascalientes 1 1 Hombres 35 6.0
00000e+00
37 37 1990 Aguascalientes 1 1 Hombres 36 5.0
00000e+00
38 38 1990 Aguascalientes 1 1 Hombres 37 5.0
00000e+00
39 39 1990 Aguascalientes 1 1 Hombres 38 4.0
00000e+00
40 40 1990 Aguascalientes 1 1 Hombres 39 4.0
00000e+00
41 41 1990 Aguascalientes 1 1 Hombres 40 3.0
00000e+00
42 42 1990 Aguascalientes 1 1 Hombres 41 3.0
00000e+00
43 43 1990 Aguascalientes 1 1 Hombres 42 3.0
00000e+00
44 44 1990 Aguascalientes 1 1 Hombres 43 3.0
00000e+00
45 45 1990 Aguascalientes 1 1 Hombres 44 3.0
00000e+00
46 46 1990 Aguascalientes 1 1 Hombres 45 2.0
00000e+00
47 47 1990 Aguascalientes 1 1 Hombres 46 2.0
00000e+00
48 48 1990 Aguascalientes 1 1 Hombres 47 2.0
00000e+00
49 49 1990 Aguascalientes 1 1 Hombres 48 2.0
00000e+00
50 50 1990 Aguascalientes 1 1 Hombres 49 2.0
00000e+00
51 51 1990 Aguascalientes 1 1 Hombres 50 1.0
00000e+00
52 52 1990 Aguascalientes 1 1 Hombres 51 1.0
00000e+00
53 53 1990 Aguascalientes 1 1 Hombres 52 1.0
00000e+00
54 54 1990 Aguascalientes 1 1 Hombres 53 1.0
00000e+00
55 55 1990 Aguascalientes 1 1 Hombres 54 1.0
00000e+00
56 56 1990 Aguascalientes 1 1 Hombres 55 1.0
00000e+00
57 57 1990 Aguascalientes 1 1 Hombres 56 1.0
00000e+00
58 58 1990 Aguascalientes 1 1 Hombres 57 1.0
00000e+00
59 59 1990 Aguascalientes 1 1 Hombres 58 1.0
00000e+00
60 60 1990 Aguascalientes 1 1 Hombres 59 1.0
00000e+00
61 61 1990 Aguascalientes 1 1 Hombres 60 1.0
00000e+00
62 62 1990 Aguascalientes 1 1 Hombres 61 1.0
00000e+00
63 63 1990 Aguascalientes 1 1 Hombres 62 1.0
00000e+00
64 64 1990 Aguascalientes 1 1 Hombres 63 1.0
00000e+00
65 65 1990 Aguascalientes 1 1 Hombres 64 0.0
00000e+00
66 66 1990 Aguascalientes 1 1 Hombres 65 0.0
00000e+00
67 67 1990 Aguascalientes 1 1 Hombres 66 0.0
00000e+00
68 68 1990 Aguascalientes 1 1 Hombres 67 0.0
00000e+00
69 69 1990 Aguascalientes 1 1 Hombres 68 0.0
00000e+00
70 70 1990 Aguascalientes 1 1 Hombres 69 0.0
00000e+00
71 71 1990 Aguascalientes 1 1 Hombres 70 0.0
00000e+00
72 72 1990 Aguascalientes 1 1 Hombres 71 0.0
00000e+00
73 73 1990 Aguascalientes 1 1 Hombres 72 0.0
00000e+00
74 74 1990 Aguascalientes 1 1 Hombres 73 0.0
00000e+00
75 75 1990 Aguascalientes 1 1 Hombres 74 0.0
00000e+00
76 76 1990 Aguascalientes 1 1 Hombres 75 0.0
00000e+00
77 77 1990 Aguascalientes 1 1 Hombres 76 0.0
00000e+00
78 78 1990 Aguascalientes 1 1 Hombres 77 0.0
00000e+00
79 79 1990 Aguascalientes 1 1 Hombres 78 0.0
00000e+00
80 80 1990 Aguascalientes 1 1 Hombres 79 0.0
00000e+00
81 81 1990 Aguascalientes 1 1 Hombres 80 0.0
00000e+00
82 82 1990 Aguascalientes 1 1 Hombres 81 0.0
00000e+00
83 83 1990 Aguascalientes 1 1 Hombres 82 0.0
00000e+00
84 84 1990 Aguascalientes 1 1 Hombres 83 0.0
00000e+00
85 85 1990 Aguascalientes 1 1 Hombres 84 0.0
00000e+00
86 86 1990 Aguascalientes 1 1 Hombres 85 0.0
00000e+00
87 87 1990 Aguascalientes 1 1 Hombres 86 0.0
00000e+00
88 88 1990 Aguascalientes 1 1 Hombres 87 0.0
00000e+00
89 89 1990 Aguascalientes 1 1 Hombres 88 0.0
00000e+00
90 90 1990 Aguascalientes 1 1 Hombres 89 0.0
00000e+00
91 91 1990 Aguascalientes 1 1 Hombres 90 0.0
00000e+00
92 92 1990 Aguascalientes 1 1 Hombres 91 0.0
00000e+00
93 93 1990 Aguascalientes 1 1 Hombres 92 0.0
00000e+00
94 94 1990 Aguascalientes 1 1 Hombres 93 0.0
00000e+00
95 95 1990 Aguascalientes 1 1 Hombres 94 0.0
00000e+00
96 96 1990 Aguascalientes 1 1 Hombres 95 0.0
00000e+00
97 97 1990 Aguascalientes 1 1 Hombres 96 0.0
00000e+00
98 98 1990 Aguascalientes 1 1 Hombres 97 0.0
00000e+00
99 99 1990 Aguascalientes 1 1 Hombres 98 0.0
00000e+00
100 100 1990 Aguascalientes 1 1 Hombres 99 0.0
00000e+00
101 101 1990 Aguascalientes 1 1 Hombres 100 0.0
00000e+00
102 102 1990 Aguascalientes 1 1 Hombres 101 0.0
00000e+00
103 103 1990 Aguascalientes 1 1 Hombres 102 0.0
00000e+00
104 104 1990 Aguascalientes 1 1 Hombres 103 0.0
00000e+00
105 105 1990 Aguascalientes 1 1 Hombres 104 0.0
00000e+00
106 106 1990 Aguascalientes 1 1 Hombres 105 0.0
00000e+00
107 107 1990 Aguascalientes 1 1 Hombres 106 0.0
00000e+00
108 108 1990 Aguascalientes 1 1 Hombres 107 0.0
00000e+00
109 109 1990 Aguascalientes 1 1 Hombres 108 0.0
00000e+00
110 110 1990 Aguascalientes 1 1 Hombres 109 0.0
00000e+00
111 111 1990 Aguascalientes 1 1 Mujeres 0 6.0
00000e+00
112 112 1990 Aguascalientes 1 1 Mujeres 1 8.0
00000e+00
113 113 1990 Aguascalientes 1 1 Mujeres 2 1.0
00000e+01
114 114 1990 Aguascalientes 1 1 Mujeres 3 9.0
00000e+00
115 115 1990 Aguascalientes 1 1 Mujeres 4 7.0
00000e+00
116 116 1990 Aguascalientes 1 1 Mujeres 5 7.0
00000e+00
117 117 1990 Aguascalientes 1 1 Mujeres 6 6.0
00000e+00
118 118 1990 Aguascalientes 1 1 Mujeres 7 5.0
00000e+00
119 119 1990 Aguascalientes 1 1 Mujeres 8 4.0
00000e+00
120 120 1990 Aguascalientes 1 1 Mujeres 9 3.0
00000e+00
121 121 1990 Aguascalientes 1 1 Mujeres 10 3.0
00000e+00
122 122 1990 Aguascalientes 1 1 Mujeres 11 2.0
00000e+00
123 123 1990 Aguascalientes 1 1 Mujeres 12 2.0
00000e+00
124 124 1990 Aguascalientes 1 1 Mujeres 13 2.0
00000e+00
125 125 1990 Aguascalientes 1 1 Mujeres 14 2.0
00000e+00
[ reached getOption("max.print") -- omitted 301935 rows ]
> datos <- read.table("swirl_temp/inmigintnalpry.csv", header=TRUE, se
p=",", fileEncoding = "latin1")

| Tu dedicacin es inspiradora!

|================
| 22%

| Como podrs notar usaste el argumento fileEncoding; esto debido a qu


e de no usarlo
| R no podra importar el archivo, puesto que la segunda cadena del ar
chivo: ao, no
| es una cadena vlida para el tipo de codificacin que read.table usa
por defecto.
| Para poder leer el archivo basta con especificar el argumento fileEn
coding. De no
| especificarlo R te indicar que hay un error.

...

|==================
| 24%

| Intenta usar datos_2 <- read.table("swirl_temp/inmigintnalpry.csv",


header=TRUE,
| sep=","). Debido a que el archivo inmigintnalpry.csv contiene caract
eres
| especiales como la , R PUEDE MOSTRARTE UN ERROR. Si R te muestra el
error,
| ingresa ok() en la lnea de comandos para continuar.

>
> datos_2 <- read.table("swirl_temp/inmigintnalpry.csv", header=TRUE,s
ep=",")

| No tan bien, pero ests aprendiendo! Intenta de nuevo. O escribe in


fo() para ms
| opciones.

| Ingresa datos2 <- read.table("swirl_temp/inmigintnalpry.csv", header


=TRUE,
| sep=","), despus ingresa ok() para continuar.

> datos2 <- read.table("swirl_temp/inmigintnalpry.csv", header=TRUE,se


p=",")

| Eso es trabajo bien hecho!

|====================
| 26%

| Este error es muy comn cuando intentas leer archivos que su conteni
do est en
| espaol; esto se debe a que usa otra codificacin para poder abarcar
ms smbolos
| que no usan otros idiomas, como en este caso la . Para poder leer a
rchivos que
| contengan , basta con especificar el argumento fileEncoding, el cua
l indica la
| codificacin del archivo a importar; en este caso, usars fileEncodi
ng = "latin1".
...

|=====================
| 28%

| Comnmente las opciones ms importantes son sep y header. Casi siemp


re debes saber
| el campo separador y si hay un campo header.

...

|=======================
| 30%

| Ahora ve lo que contiene 'datos'. Para hacer esto usars la funcin


View(). Si te
| encuentras en Rstudio simplemente puedes presionar el nombre de la v
ariable datos
| en el apartado Entorno ('Environment') y te mostrar su contenido. P
resiona la
| variable datos en Rstudio o ingresa View(datos) en la lnea de coman
dos.

> View(datos)

| Esa es la respuesta que estaba buscando.

|========================
| 33%

| Como podrs notar el archivo contiene 302060 observaciones!

...

|==========================
| 35%

| Es importante saber que no solo existe read.table(). R adems incluy


e un conjunto
| de funciones que llaman a read.table() con diferentes opciones por d
efecto para
| valores como sep y header, y algunos otros. En la mayora de los cas
os encontrars
| que puedes usar read.csv() para archivos separados por comas o read.
delim() para
| archivos delimitados por TAB sin especificar otras opciones.

...

|============================
| 37%

| La mayora de las veces deberas ser capaz de cargar archivos de tex


to en R con la
| funcin read.table(). Pero algunas veces sers provedo con un archi
vo de texto
| que no pueda ser ledo correctamente con esta funcin.

...

|=============================
| 39%
| Si ests en Europa y usas comas para indicar punto decimal en los n
meros,
| entonces puedes usar read.cvs2() y read.delim2().

...

|===============================
| 41%

| Una manera de agilizar la lectura de datos es usando el parmetro co


lClasses de la
| funcin read.table().

...

|=================================
| 43%

| Este parmetro recibe un vector, el cual describe cada uno de los ti


pos por
| columna que va a leer. Esto agiliza la lectura debido a que read.tab
le()
| normalmente lee toda la informacin y despus revisa cada una de las
columnas, y
| decide conforme a lo que vio de qu tipo es cada columna, y al indic
ar el
| parmetro colClasses le dices a la funcin read.table() de qu tipo
son los datos
| que va a ver, con lo que te evitas el chequeo para saber el tipo de
cada columna.

...

|==================================
| 46%

| Puedes averiguar la clase de las columnas de manera fcil cuando tie


nes archivos
| grandes.

...

|====================================
| 48%

| Lo que puedes hacer es indicarle a read.table() que solo lea los pri
meros 100
| renglones del archivo; esto lo haces indicando el parmetro nrow. Ca
be recordar
| que debes especificar la codificacin del archivo, debido a que usa
caracteres
| especiales, tambin que el primer rengln son los nombres de la colu
mnas y que el
| delimitador es una coma. Ingresa inicial <-
| read.table("swirl_temp/inmigintnalpry.csv", header=TRUE, sep=",", fi
leEncoding =
| "latin1", nrow = 100) en la lnea de comandos.

> inicial <- read.table("swirl_temp/inmigintnalpry.csv", header=TRUE,


sep=",", fileEncoding = "latin1", nrow = 100)
| Esa es la respuesta que estaba buscando.

|======================================
| 50%

| Con esto has conseguido leer las primeras 100 observaciones.

...

|=======================================
| 52%

| Despus usa la funcin sapply mandndole como parmetros el objeto i


nicial (el
| cual contiene las 100 observaciones) y la funcin class(). Ingresa c
lases <-
| sapply(inicial, class) en la lnea de comandos.

> clases <- sapply(inicial, class)

| Excelente trabajo!

|=========================================
| 54%

| Con esto lo que conseguiste fue aplicar la funcin class() a cada un


a de las
| columnas del objeto inicial. La funcin class() es una funcin que d
etermina la
| clase o tipo de un objeto. Entonces los tipos de cada una de las col
umnas fueron
| guardados en el objeto clases.

...

|==========================================
| 57%

| Para ver el contenido del objeto 'clases', basta con escribir clases
en la lnea
| de comandos.

> clases
renglon ao ent id_ent cvegeo sex
o edad
"integer" "integer" "factor" "integer" "integer" "factor
" "integer"
inmigintnal
"numeric"

| Eres el mejor!

|============================================
| 59%

| Por ltimo, con este vector de clases, leers todo el archivo usando
la funcin
| read.table, pero pasndole el argumento colClasses. Ingresa datos <-
| read.table("swirl_temp/inmigintnalpry.csv", header=TRUE, sep=",", fi
leEncoding =
| "latin1", colClasses=clases) en la lnea de comandos.
> datos <- read.table("swirl_temp/inmigintnalpry.csv", header=TRUE, se
p=",", fileEncoding ="latin1", colClasses=clases)

| Perseverancia es la respuesta.

|==============================================
| 61%

| Como podrs notar el tiempo de lectura mejor significativamente usa


ndo este
| truco.

...

|===============================================
| 63%

| Si deseas guardar objetos, la manera ms simple es usando la funcin


save(). Por
| ejemplo, puedes usar el siguiente comando para salvar el objeto dat
os y el
| objeto clases en el archivo swirl_temp/datos_inmigrates.RData. Ing
resa
| save(datos, clases, file="swirl_temp/datos_inmigrates.RData") en la
lnea de
| comandos.

> save(datos, clases, file="swirl_temp/datos_inmigrates.RData"


+
+
+
+ exit
Error: unexpected symbol in:
"
exit"
> save(datos, clases, file="swirl_temp/datos_inmigrates.RData")

| Eso es trabajo bien hecho!

|=================================================
| 65%

| La funcin save() escribe una representacin externa de los objetos


especificados
| a un archivo sealado. Adems, como ya te habrs dado cuenta, t pue
des guardar
| mltiples objetos en el mismo archivo, tan solo al listarlos en la f
uncin save().

...

|===================================================
| 67%

| Es importante notar que en R, las rutas de archivo siempre son espec


ificadas con
| diagonales ("/"), aun estando en Microsoft Windows. As que para sal
var este
| archivo al directorio "C:\Documents and Settings\Mi Usuario\Mis
| Documentos\datos_inmigrates.RData, solo usaras el siguiente comando
:
| save(datos,file="C:/Documents and Settings/Mi Usuario/Mis
| Documentos/datos_inmigrates.RData").

...

|====================================================
| 70%

| Tambin es importante notar que el argumento file debe ser explcita


mente
| nombrado.

...

|======================================================
| 72%

| Ahora que has guardado los objetos 'datos' y 'clases' en un archivo,


puedes
| borrarlos. Introduce rm(datos,clases) en la lnea de comandos.

> rm(datos,clases)

| Eres el mejor!

|=======================================================
| 74%

| Y si ahora usas la funcin ls(), la cual como recordars muestra qu


conjuntos de
| datos y funciones un usuario ha definido, vers que no estn present
es los objetos
| datos y clases. Ingresa ls() en la lnea de comandos.

> ls()
[1] "datos_2" "datos2" "display_swirl_file"
[4] "find_course" "Ingresa_datos" "Ingresadatos"
[7] "inicial" "ok"

| Lo ests haciendo muy bien!

|=========================================================
| 76%

| Ahora, puedes fcilmente cargar los objetos datos y clases devue


lta a R con la
| funcin load(). Solo debes especificar el nombre del archivo donde l
os guardaste.
| Ingresa load("swirl_temp/datos_inmigrates.RData") en la lnea de com
andos.

>
> load("swirl_temp/datos_inmigrates.RData")

| Eso es correcto!

|===========================================================
| 78%

| Y si ahora usas la funcin ls(), vers que estn presentes los objet
os 'datos' y
| 'clases'. Ingresa ls() en la lnea de comandos.
> ls()
[1] "clases" "datos" "datos_2"
[4] "datos2" "display_swirl_file" "find_course"
[7] "Ingresa_datos" "Ingresadatos" "inicial"
[10] "ok"

| Lo has logrado! Buen trabajo!

|============================================================
| 80%

| Es importante saber que los archivos guardados en R funcionarn en t


odas las
| plataformas; es decir, archivos guardados en Linux funcionarn si so
n cargados
| desde Windows o Mac OS X.

...

|==============================================================
| 83%

| Si deseas guardar cada uno de los objetos de tu espacio de trabajo (


workspace),
| puedes hacerlo usando la funcin save.image(). De hecho, cuando salg
as de la
| session de R, se te preguntar si deseas salvar tu actual espacio de
trabajo
| (workspace). Si sealas que s lo deseas, tu espacio de trabajo ser
guardado de
| la misma manera que usar esta funcin.

...

|================================================================
| 85%

| Por ltimo, al igual que para importar datos existe la funcin read.
table(), para
| exportar datos a un archivo de texto existe la funcin write.table()
.

...

|=================================================================
| 87%

| Normalmente los datos a exportar son data frames y matrices.

...

|===================================================================
| 89%

| Para exportar un objeto a un archivo basta con escribir la funcin w


rite.table() y
| como argumento el nombre del objeto, adems del nombre del archivo d
onde se
| guardar. Ingresa write.table(datos, file="swirl_temp/datos.txt") en
la lnea de
| comandos.
> write.table(datos, file="swirl_temp/datos.txt")

| Todo ese trabajo est rindiendo frutos!

|===================================================================
= | 91%

| Si tienes suerte, te mostrar el archivo datos.txt en algn editor;


de lo
| contrario, bscalo en el subdirectorio swirl_temp de tu directorio d
e trabajo y
| velo en una aplicacin separada.

...

|===================================================================
=== | 93%

| Como podrs notar el archivo datos.txt no es igual al archivo inmigi


ntnalpry.csv
| que al inicio de esta leccin te mostr. Una de las principales razo
nes es que
| para escribir el objeto datos no especificaste un delimitador (sep)
y por defecto
| R delimit con espacios.

...

|===================================================================
===== | 96%

| Al igual que con la funcin read.table(), R incluye un conjunto de f


unciones que
| llaman a write.table() con diferentes opciones por defecto, como lo
son
| write.csv() y write.csv2().

...

|===================================================================
====== | 98%

| Si deseas, puedes jugar con las funciones write.*() para lograr que
datos.txt sea
| identico a inmigintnalpry.csv. Recuerda que para ver los parmetros
de write.*()
| puedes usar help(); por ejemplo, help(write.csv).

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?
Leccin 9
Selection: 9
|
| 0%

| En esta leccin vers cmo se manejan los colores en el sistema de g


rficos de R.

...

|==
| 3%

| Anteriormente viste que puedes usar el parmetro col para especifica


r colores.

...

|====
| 5%

| Hasta ahora, la mayora de las veces has usado cadenas refirindose


a un simple
| conjunto de colores.

...

|======
| 8%

| En R puedes especificar colores de tres maneras: como una cadena, us


ando los
| componentes RGB (rojo, verde, azul) o haciendo referencia a un ndic
e de la paleta
| de colores mediante un entero.

...

|========
| 11%

| Para obtener la lista de los nombres de colores vlidos, usa la func


in colors().
| Ingresa colors() en la lnea de comandos.

> colors()
[1] "white" "aliceblue" "antiquewhite"
[4] "antiquewhite1" "antiquewhite2" "antiquewhite3"
[7] "antiquewhite4" "aquamarine" "aquamarine1"
[10] "aquamarine2" "aquamarine3" "aquamarine4"
[13] "azure" "azure1" "azure2"
[16] "azure3" "azure4" "beige"
[19] "bisque" "bisque1" "bisque2"
[22] "bisque3" "bisque4" "black"
[25] "blanchedalmond" "blue" "blue1"
[28] "blue2" "blue3" "blue4"
[31] "blueviolet" "brown" "brown1"
[34] "brown2" "brown3" "brown4"
[37] "burlywood" "burlywood1" "burlywood2"
[40] "burlywood3" "burlywood4" "cadetblue"
[43] "cadetblue1" "cadetblue2" "cadetblue3"
[46] "cadetblue4" "chartreuse" "chartreuse1"
[49] "chartreuse2" "chartreuse3" "chartreuse4"
[52] "chocolate" "chocolate1" "chocolate2"
[55] "chocolate3" "chocolate4" "coral"
[58] "coral1" "coral2" "coral3"
[61] "coral4" "cornflowerblue" "cornsilk"
[64] "cornsilk1" "cornsilk2" "cornsilk3"
[67] "cornsilk4" "cyan" "cyan1"
[70] "cyan2" "cyan3" "cyan4"
[73] "darkblue" "darkcyan" "darkgoldenrod"
[76] "darkgoldenrod1" "darkgoldenrod2" "darkgoldenrod3"
[79] "darkgoldenrod4" "darkgray" "darkgreen"
[82] "darkgrey" "darkkhaki" "darkmagenta"
[85] "darkolivegreen" "darkolivegreen1" "darkolivegreen2"
[88] "darkolivegreen3" "darkolivegreen4" "darkorange"
[91] "darkorange1" "darkorange2" "darkorange3"
[94] "darkorange4" "darkorchid" "darkorchid1"
[97] "darkorchid2" "darkorchid3" "darkorchid4"
[100] "darkred" "darksalmon" "darkseagreen"
[103] "darkseagreen1" "darkseagreen2" "darkseagreen3"
[106] "darkseagreen4" "darkslateblue" "darkslategray"
[109] "darkslategray1" "darkslategray2" "darkslategray3"
[112] "darkslategray4" "darkslategrey" "darkturquoise"
[115] "darkviolet" "deeppink" "deeppink1"
[118] "deeppink2" "deeppink3" "deeppink4"
[121] "deepskyblue" "deepskyblue1" "deepskyblue2"
[124] "deepskyblue3" "deepskyblue4" "dimgray"
[127] "dimgrey" "dodgerblue" "dodgerblue1"
[130] "dodgerblue2" "dodgerblue3" "dodgerblue4"
[133] "firebrick" "firebrick1" "firebrick2"
[136] "firebrick3" "firebrick4" "floralwhite"
[139] "forestgreen" "gainsboro" "ghostwhite"
[142] "gold" "gold1" "gold2"
[145] "gold3" "gold4" "goldenrod"
[148] "goldenrod1" "goldenrod2" "goldenrod3"
[151] "goldenrod4" "gray" "gray0"
[154] "gray1" "gray2" "gray3"
[157] "gray4" "gray5" "gray6"
[160] "gray7" "gray8" "gray9"
[163] "gray10" "gray11" "gray12"
[166] "gray13" "gray14" "gray15"
[169] "gray16" "gray17" "gray18"
[172] "gray19" "gray20" "gray21"
[175] "gray22" "gray23" "gray24"
[178] "gray25" "gray26" "gray27"
[181] "gray28" "gray29" "gray30"
[184] "gray31" "gray32" "gray33"
[187] "gray34" "gray35" "gray36"
[190] "gray37" "gray38" "gray39"
[193] "gray40" "gray41" "gray42"
[196] "gray43" "gray44" "gray45"
[199] "gray46" "gray47" "gray48"
[202] "gray49" "gray50" "gray51"
[205] "gray52" "gray53" "gray54"
[208] "gray55" "gray56" "gray57"
[211] "gray58" "gray59" "gray60"
[214] "gray61" "gray62" "gray63"
[217] "gray64" "gray65" "gray66"
[220] "gray67" "gray68" "gray69"
[223] "gray70" "gray71" "gray72"
[226] "gray73" "gray74" "gray75"
[229] "gray76" "gray77" "gray78"
[232] "gray79" "gray80" "gray81"
[235] "gray82" "gray83" "gray84"
[238] "gray85" "gray86" "gray87"
[241] "gray88" "gray89" "gray90"
[244] "gray91" "gray92" "gray93"
[247] "gray94" "gray95" "gray96"
[250] "gray97" "gray98" "gray99"
[253] "gray100" "green" "green1"
[256] "green2" "green3" "green4"
[259] "greenyellow" "grey" "grey0"
[262] "grey1" "grey2" "grey3"
[265] "grey4" "grey5" "grey6"
[268] "grey7" "grey8" "grey9"
[271] "grey10" "grey11" "grey12"
[274] "grey13" "grey14" "grey15"
[277] "grey16" "grey17" "grey18"
[280] "grey19" "grey20" "grey21"
[283] "grey22" "grey23" "grey24"
[286] "grey25" "grey26" "grey27"
[289] "grey28" "grey29" "grey30"
[292] "grey31" "grey32" "grey33"
[295] "grey34" "grey35" "grey36"
[298] "grey37" "grey38" "grey39"
[301] "grey40" "grey41" "grey42"
[304] "grey43" "grey44" "grey45"
[307] "grey46" "grey47" "grey48"
[310] "grey49" "grey50" "grey51"
[313] "grey52" "grey53" "grey54"
[316] "grey55" "grey56" "grey57"
[319] "grey58" "grey59" "grey60"
[322] "grey61" "grey62" "grey63"
[325] "grey64" "grey65" "grey66"
[328] "grey67" "grey68" "grey69"
[331] "grey70" "grey71" "grey72"
[334] "grey73" "grey74" "grey75"
[337] "grey76" "grey77" "grey78"
[340] "grey79" "grey80" "grey81"
[343] "grey82" "grey83" "grey84"
[346] "grey85" "grey86" "grey87"
[349] "grey88" "grey89" "grey90"
[352] "grey91" "grey92" "grey93"
[355] "grey94" "grey95" "grey96"
[358] "grey97" "grey98" "grey99"
[361] "grey100" "honeydew" "honeydew1"
[364] "honeydew2" "honeydew3" "honeydew4"
[367] "hotpink" "hotpink1" "hotpink2"
[370] "hotpink3" "hotpink4" "indianred"
[373] "indianred1" "indianred2" "indianred3"
[376] "indianred4" "ivory" "ivory1"
[379] "ivory2" "ivory3" "ivory4"
[382] "khaki" "khaki1" "khaki2"
[385] "khaki3" "khaki4" "lavender"
[388] "lavenderblush" "lavenderblush1" "lavenderblush2"
[391] "lavenderblush3" "lavenderblush4" "lawngreen"
[394] "lemonchiffon" "lemonchiffon1" "lemonchiffon2"
[397] "lemonchiffon3" "lemonchiffon4" "lightblue"
[400] "lightblue1" "lightblue2" "lightblue3"
[403] "lightblue4" "lightcoral" "lightcyan"
[406] "lightcyan1" "lightcyan2" "lightcyan3"
[409] "lightcyan4" "lightgoldenrod" "lightgoldenrod1"
[412] "lightgoldenrod2" "lightgoldenrod3" "lightgoldenrod4"
[415] "lightgoldenrodyellow" "lightgray" "lightgreen"
[418] "lightgrey" "lightpink" "lightpink1"
[421] "lightpink2" "lightpink3" "lightpink4"
[424] "lightsalmon" "lightsalmon1" "lightsalmon2"
[427] "lightsalmon3" "lightsalmon4" "lightseagreen"
[430] "lightskyblue" "lightskyblue1" "lightskyblue2"
[433] "lightskyblue3" "lightskyblue4" "lightslateblue"
[436] "lightslategray" "lightslategrey" "lightsteelblue"
[439] "lightsteelblue1" "lightsteelblue2" "lightsteelblue3"
[442] "lightsteelblue4" "lightyellow" "lightyellow1"
[445] "lightyellow2" "lightyellow3" "lightyellow4"
[448] "limegreen" "linen" "magenta"
[451] "magenta1" "magenta2" "magenta3"
[454] "magenta4" "maroon" "maroon1"
[457] "maroon2" "maroon3" "maroon4"
[460] "mediumaquamarine" "mediumblue" "mediumorchid"
[463] "mediumorchid1" "mediumorchid2" "mediumorchid3"
[466] "mediumorchid4" "mediumpurple" "mediumpurple1"
[469] "mediumpurple2" "mediumpurple3" "mediumpurple4"
[472] "mediumseagreen" "mediumslateblue" "mediumspringgreen
"
[475] "mediumturquoise" "mediumvioletred" "midnightblue"
[478] "mintcream" "mistyrose" "mistyrose1"
[481] "mistyrose2" "mistyrose3" "mistyrose4"
[484] "moccasin" "navajowhite" "navajowhite1"
[487] "navajowhite2" "navajowhite3" "navajowhite4"
[490] "navy" "navyblue" "oldlace"
[493] "olivedrab" "olivedrab1" "olivedrab2"
[496] "olivedrab3" "olivedrab4" "orange"
[499] "orange1" "orange2" "orange3"
[502] "orange4" "orangered" "orangered1"
[505] "orangered2" "orangered3" "orangered4"
[508] "orchid" "orchid1" "orchid2"
[511] "orchid3" "orchid4" "palegoldenrod"
[514] "palegreen" "palegreen1" "palegreen2"
[517] "palegreen3" "palegreen4" "paleturquoise"
[520] "paleturquoise1" "paleturquoise2" "paleturquoise3"
[523] "paleturquoise4" "palevioletred" "palevioletred1"
[526] "palevioletred2" "palevioletred3" "palevioletred4"
[529] "papayawhip" "peachpuff" "peachpuff1"
[532] "peachpuff2" "peachpuff3" "peachpuff4"
[535] "peru" "pink" "pink1"
[538] "pink2" "pink3" "pink4"
[541] "plum" "plum1" "plum2"
[544] "plum3" "plum4" "powderblue"
[547] "purple" "purple1" "purple2"
[550] "purple3" "purple4" "red"
[553] "red1" "red2" "red3"
[556] "red4" "rosybrown" "rosybrown1"
[559] "rosybrown2" "rosybrown3" "rosybrown4"
[562] "royalblue" "royalblue1" "royalblue2"
[565] "royalblue3" "royalblue4" "saddlebrown"
[568] "salmon" "salmon1" "salmon2"
[571] "salmon3" "salmon4" "sandybrown"
[574] "seagreen" "seagreen1" "seagreen2"
[577] "seagreen3" "seagreen4" "seashell"
[580] "seashell1" "seashell2" "seashell3"
[583] "seashell4" "sienna" "sienna1"
[586] "sienna2" "sienna3" "sienna4"
[589] "skyblue" "skyblue1" "skyblue2"
[592] "skyblue3" "skyblue4" "slateblue"
[595] "slateblue1" "slateblue2" "slateblue3"
[598] "slateblue4" "slategray" "slategray1"
[601] "slategray2" "slategray3" "slategray4"
[604] "slategrey" "snow" "snow1"
[607] "snow2" "snow3" "snow4"
[610] "springgreen" "springgreen1" "springgreen2"
[613] "springgreen3" "springgreen4" "steelblue"
[616] "steelblue1" "steelblue2" "steelblue3"
[619] "steelblue4" "tan" "tan1"
[622] "tan2" "tan3" "tan4"
[625] "thistle" "thistle1" "thistle2"
[628] "thistle3" "thistle4" "tomato"
[631] "tomato1" "tomato2" "tomato3"
[634] "tomato4" "turquoise" "turquoise1"
[637] "turquoise2" "turquoise3" "turquoise4"
[640] "violet" "violetred" "violetred1"
[643] "violetred2" "violetred3" "violetred4"
[646] "wheat" "wheat1" "wheat2"
[649] "wheat3" "wheat4" "whitesmoke"
[652] "yellow" "yellow1" "yellow2"
[655] "yellow3" "yellow4" "yellowgreen"

| Excelente trabajo!

|==========
| 14%

| Notars que al final de la lista varios colores contienen la subcade


na "yellow".
| Una manera de buscar todos los colores que contengan la subcadena "y
ellow", es
| usando la funcin grep().

...

|============
| 16%

| Ve el uso de grep() usando la funcin help().

> help("grep")

| Excelente trabajo!

|==============
| 19%

| La funcin grep() toma al argumento pattern (una expresin regular),


lee el
| argumento x (un vector de caracteres, o un objeto que puede ser conv
ertido por la
| funcin as.character() a un vector de caracteres), y regresa las coi
ncidencias de
| pattern dentro de x.

...

|================
| 22%

| Para buscar todos los colores que contengan la subcadena "yellow" in


gresa
| grep("yellow", colors(), value=TRUE) en la lnea de comandos.
> grep("yellow", colors(), value=TRUE)
[1] "greenyellow" "lightgoldenrodyellow" "lightyellow"
[4] "lightyellow1" "lightyellow2" "lightyellow3"
[7] "lightyellow4" "yellow" "yellow1"
[10] "yellow2" "yellow3" "yellow4"
[13] "yellowgreen"

| Muy bien!

|==================
| 24%

| Ahora sabes que R contiene 13 tipos de amarillos (yellow). Notars q


ue usaste el
| argumento value de la funcin grep(); esto se debe a que de no haber
lo usado,
| grep() te hubiera regresado las posiciones en donde se encontraron c
oincidencias,
| en vez de las cadenas en donde las encontr.

...

|====================
| 27%

| La lista de colores vlidos es muy extensa. Obten su longitud.

> length(colors())
[1] 657

| Bien hecho!

|======================
| 30%

| Entonces ahora ya sabes que R tiene una gran lista de ms de 650 col
ores que
| puedes usar por nombre.

...

|========================
| 32%

| Para especificar un color usando componentes RGB, usa una cadena de


la forma
| "#RRGGBB", donde RR, GG y BB son valores hexadecimales que especific
an la cantidad
| de rojo, verde y azul, respectivamente.

...

|==========================
| 35%

| Si deseas hacer referencia a un ndice de la paleta de colores media


nte un entero,
| debes saber que existen ocho colores en la paleta por defecto.

...
|============================
| 38%

| La funcin palette() es usada para ver o manipular la paleta de colo


res. La paleta
| de colores es usada cuando el parmetro col es usado con un valor nu
mrico.

...

|==============================
| 41%

| Ingresa palette() para conocer la paleta por defecto.

> palette()
[1] "black" "red" "green3" "blue" "cyan" "magenta" "yello
w" "gray"

| Excelente trabajo!

|================================
| 43%

| Cada color es representado por un nmero entero; es decir, el nmero


1 representa
| al color negro, el 2 al rojo y el 8 al gris. Ingresa plot(1:8, col=
1:8,
| main="Colores por ndice", pch=17, cex=3) en la lnea de comandos.

> plot(1:8, col=1:8, main="Colores por ndice", pch=17, cex=3)

| Es asombroso!

|==================================
| 46%

| Como recordars, el argumento main es usado para establecer el ttul


o de la
| grfica, el argumento pch para establecer el smbolo con el que se g
raficar y el
| argumento cex para indicar el tamao del smbolo usado para graficar
.
| Como recordars, el argumento main es usado para establecer el ttul
o de la
| grfica, el argumento pch para establecer el smbolo con el que se g
raficar y el
| argumento cex para indicar el tamao del smbolo usado para graficar
.

...

|====================================
| 49%

| Si usas un nmero ms grande que ocho para graficar, los colores ser
n reciclados.
| Comprubalo: ingresa plot(1:12, col=1:12, main="Colores reciclados",
pch=18,
| cex=3) en la lnea de comandos.

> plot(1:12, col=1:12, main="Colores reciclados", pch=18,cex=3)


| Muy bien!

|=======================================
| 51%

| Si requieres un nmero ms grande de colores para graficar, necesita


rs acceder a
| una paleta ms grande.

...

|=========================================
| 54%

| Existen varias funciones incluidas en R que te regresan colores cont


inuos (paletas
| de tamao variable), que le pueden dar aspectos diferentes a tus gr
ficas.

...

|===========================================
| 57%

| Algunos ejemplos de estas funciones son rainbow(), heat.colors(), to


po.colors(), y
| terrain.colors().

...

|=============================================
| 59%

| Para cambiar la paleta de colores por defecto por cualquiera de esta


s paletas, lo
| primero que debes hacer es crear una paleta. Para crear una nueva pa
leta basta con
| llamar a cualquiera de las funciones anteriormente mencionadas, mand
ando como
| argumento el nmero de colores que deseas que contenga la paleta. Po
r ejemplo,
| ingresa paleta_arcoiris <- rainbow(10) en la lnea de comandos para
crear una
| paleta con 10 colores.

> paleta_arcoiris <- rainbow(10)

| Eso es trabajo bien hecho!

|===============================================
| 62%

| Ahora ve el contenido de la paleta que acabas de crear.

> paleta_arcoiris
[1] "#FF0000FF" "#FF9900FF" "#CCFF00FF" "#33FF00FF" "#00FF66FF" "#00F
FFFFF"
[7] "#0066FFFF" "#3300FFFF" "#CC00FFFF" "#FF0099FF"

| Muy bien!
|=================================================
| 65%

| Como vers, la nueva paleta que creaste usando rainbow(10) contiene


colores que
| usan componentes RGB.

...

|===================================================
| 68%

| Para cambiar la paleta de colores por la que creaste, ingresa


| palette(paleta_arcoiris) en la lnea de comandos.

> palette(paleta_arcoiris)

| Lo ests haciendo muy bien!

|=====================================================
| 70%

| Verifica que los cambios se efectuaron en la paleta de colores.

> paleta_arcoiris
[1] "#FF0000FF" "#FF9900FF" "#CCFF00FF" "#33FF00FF" "#00FF66FF" "#00F
FFFFF"
[7] "#0066FFFF" "#3300FFFF" "#CC00FFFF" "#FF0099FF"

| Un buen intento, pero no es exactamente lo que yo esperaba. Intntal


o de nuevo. O
| escribe info() para ms opciones.

| Ingresa palette() en la lnea de comandos.

> palette()
[1] "red" "#FF9900" "#CCFF00" "#33FF00" "#00FF66" "cyan" "#006
6FF" "#3300FF"
[9] "#CC00FF" "#FF0099"

| Lo ests haciendo muy bien!

|=======================================================
| 73%

| Ahora grafica usando la nueva paleta; ingresa plot(1:10, col=1:10, m


ain="Paleta
| Arcoiris",pch=17, cex=3) en la lnea de comandos.

> plot(1:10, col=1:10, main="PaletaArcoiris",pch=17, cex=3)

| Sigue intentando! O escribe info() para ms opciones.

> plot(1:10, col=1:10, main="Paleta_Arcoiris",pch=17, cex=3)

| No tan bien, pero ests aprendiendo! Intenta de nuevo. O escribe in


fo() para ms
| opciones.

> plot(1:10, col=1:10, main="Paleta Arcoiris",pch=17, cex=3)

| Esa es la respuesta que estaba buscando.


|=========================================================
| 76%

| Prueba con otra paleta; ingresa paleta_calida <- heat.colors(10) par


a crear una
| paleta con 10 colores clidos.

> paleta_calida <- heat.colors(10)

| Eso es correcto!

|===========================================================
| 78%

| Ahora cambia la paleta actual por la nueva paleta creada.

> paleta_calida
[1] "#FF0000FF" "#FF2400FF" "#FF4900FF" "#FF6D00FF" "#FF9200FF" "#FFB
600FF"
[7] "#FFDB00FF" "#FFFF00FF" "#FFFF40FF" "#FFFFBFFF"

| No exactamente. Dele otra oportunidad. O escribe info() para ms opc


iones.

| Ingresa palette(paleta_calida) en la lnea de comandos para cambiar


la paleta
| actual por paleta_calida.

> palette(paleta_calida)

| Excelente!

|=============================================================
| 81%

| Y ahora grafica plot(1:10, col=1:10, main="Paleta Clida",pch=17, ce


x=3) para ver
| los cambios.

> plot(1:10, col=1:10, main="Paleta Clida",pch=17, cex=3)

| Eres bastante bueno!

|===============================================================
| 84%

| Todas las diferentes paletas son muy bonitas y tiles de diferentes


maneras, pero
| tal vez no es exactamente lo que ests buscando, o tal vez t quiere
s tener ms
| control sobre los colores. Para especificar los colores que quieras
puedes crear
| un vector que contenga dichos colores. Por ejemplo, crea el vector
mi_paleta que
| contenga los colores "red", "green" y "#0019FFFF".

> mi_paleta <- c("red", "green", "#0019FFFF")

| Lo has logrado! Buen trabajo!


|=================================================================
| 86%

| Y ahora puedes usar el vector directamente para graficar. Por ejempl


o, ingresa
| plot(1:10, col=mi_paleta, main="Mi Paleta",pch=17, cex=3) en la lne
a de comandos.

> plot(1:10, col=mi_paleta, main="Mi Paleta",pch=17, cex=3)

| Excelente!

|===================================================================
| 89%

| O establecerlo como tu nueva paleta. Ingresa palette(mi_paleta) en l


a lnea de
| comandos.

> palette(mi_paleta)

| Traes una muy buena racha!

|===================================================================
== | 92%

| Y graficar haciendo referencia por ndice. Ingresa plot(1:10, col=1:


10, main="Mi
| Paleta",pch=17, cex=3) en la lnea de comandos.

> plot(1:10, col=1:10, main="Mi Paleta",pch=17, cex=3)

| Eres bastante bueno!

|===================================================================
==== | 95%

| Si deseas regresar a la paleta de colores por defecto, debes de ingr


esar
| palette("default") en la lnea de comandos. Ahora hazlo!

> palette("default")

| Bien hecho!

|===================================================================
====== | 97%

| Otras funciones que estn disponibles para especificar colores son r


gb(), hsv(),
| hcl() y gray(), pero su uso es diferente a las que usaste anteriorme
nte. Si deseas
| usarlas consulta su pgina de ayuda.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?
1: No
2: Si

Leccin 10

Selection: 10
|
| 0%

| En esta leccin conocers cmo utilizar notacin matemtica en R.

...

|===
| 4%

| Antes de comenzar con notacin matemtica es importante que sepas qu


e existe la
| funcin text().

...

|=====
| 7%

| La funcin text() dibuja cadenas sobre grficas. Para probar la func


in text(),
| crea una grfica vaca de tamao 20x20. Ingresa plot(1:20, type="n")
en la lnea
| de comandos.

> plot(1:20, type="n")

| Eres bastante bueno!

|========
| 11%

| Ahora ingresa text(5, 5, "Hola Mundo!") en la lnea de comandos par


a probar la
| funcin text().

> text(5, 5, "Hola Mundo!")

| Excelente trabajo!

|===========
| 14%

| Con esto graficaste la cadena "Hola Mundo!" en las coordenadas (5,


5). Para
| conocer ms acerca de text() ve su pgina de ayuda.

> help("text")

| Eres el mejor!
|=============
| 18%

| La funcin text() dibuja las cadenas dadas por el argumento labels e


n las
| coordenadas x y y.

...

|================
| 21%

| Muchos parmetros controlan el aspecto en que los textos son mostrad


os en la
| grfica.

...

|===================
| 25%

| Si deseas cambiar el tamao de los textos producidos por la funcin


text(), puedes
| usar el argumento cex de la funcin text(), el cual especifica un fa
ctor de escala
| por defecto para el texto. Prubalo. Ingresa text(11, 11, "Hola Mun
do! x2",
| cex=2) en la lnea de comandos.

> text(11, 11, "Hola Mundo! x2",cex=2)

| Buen trabajo!

|=====================
| 29%

| Otro aspecto importante son los tipos de fuentes que puedes usar. Un
a manera
| simple para cambiar los tipos de fuentes es usando el parmetro fami
ly. Ingresa
| text(7, 7, "Hola Mundo con Serif!", family="serif") en la lnea de
comandos.

> text(7, 7, "Hola Mundo con Serif!", family="serif")

| Acertaste!

|========================
| 32%

| Los valores comunes usados para el argumento family son "serif", "sa
ns", "mono" y
| "symbol". Ahora prueba la fuente "mono". Ingresa text(9, 9, "Hola M
undo con
| Mono!", family="mono") en la lnea de comandos.

> text(9, 9, "Hola Mundo con Mono!", family="mono")

| Bien hecho!

|===========================
| 36%
| Ahora ingresa text(13, 13, "Hola Mundo con Sans!", family="sans") e
n la lnea de
| comandos.

> text(13, 13, "Hola Mundo con Sans!", family="sans")

| Sigue trabajando de esa manera y llegars lejos!

|=============================
| 39%

| Notars que la fuente por defecto es "sans".

...

|================================
| 43%

| Volviendo a la notacin matemtica...

...

|===================================
| 46%

| Muchas veces necesitars etiquetas o ttulos donde tengas que utiliz


ar notacin
| matemtica; es decir, que tengas que hacer uso de smbolos y/o expre
siones
| matemticas.

...

|======================================
| 50%

| Ingresa demo(plotmath) para ver un ejemplo de expresiones matemtica


s que puedes
| usar en R.

> demo(plotmath)

demo(plotmath)
---- ~~~~~~~~

Type <Return> to start :

> # Copyright (C) 2002-2009 The R Core Team


>
> require(datasets)

> require(grDevices); require(graphics)

> ## --- "math annotation" in plots :


>
> ######
> # create tables of mathematical annotation functionality
> ######
> make.table <- function(nr, nc) {
+ savepar <- par(mar=rep(0, 4), pty="s")
+ plot(c(0, nc*2 + 1), c(0, -(nr + 1)),
+ type="n", xlab="", ylab="", axes=FALSE)
+ savepar
+ }

> get.r <- function(i, nr) {


+ i %% nr + 1
+ }

> get.c <- function(i, nr) {


+ i %/% nr + 1
+ }

> draw.title.cell <- function(title, i, nr) {


+ r <- get.r(i, nr)
+ c <- get.c(i, nr)
+ text(2*c - .5, -r, title)
+ rect((2*(c - 1) + .5), -(r - .5), (2*c + .5), -(r + .5))
+ }

> draw.plotmath.cell <- function(expr, i, nr, string = NULL) {


+ r <- get.r(i, nr)
+ c <- get.c(i, nr)
+ if (is.null(string)) {
+ string <- deparse(expr)
+ string <- substr(string, 12, nchar(string) - 1)
+ }
+ text((2*(c - 1) + 1), -r, string, col="grey")
+ text((2*c), -r, expr, adj=c(.5,.5))
+ rect((2*(c - 1) + .5), -(r - .5), (2*c + .5), -(r + .5), border=
"grey")
+ }

> nr <- 20

> nc <- 2

> oldpar <- make.table(nr, nc)


Hit <Return> to see next plot:

> i <- 0

> draw.title.cell("Arithmetic Operators", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x + y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x - y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x * y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x / y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %+-% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %/% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %*% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %.% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(-x), i, nr); i <- i + 1


> draw.plotmath.cell(expression(+x), i, nr); i <- i + 1

> draw.title.cell("Sub/Superscripts", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x[i]), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x^2), i, nr); i <- i + 1

> draw.title.cell("Juxtaposition", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x * y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(paste(x, y, z)), i, nr); i <- i + 1

> draw.title.cell("Radicals", i, nr); i <- i + 1

> draw.plotmath.cell(expression(sqrt(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(sqrt(x, y)), i, nr); i <- i + 1

> draw.title.cell("Lists", i, nr); i <- i + 1

> draw.plotmath.cell(expression(list(x, y, z)), i, nr); i <- i + 1

> draw.title.cell("Relations", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x == y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x != y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x < y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x <= y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x > y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x >= y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %~~% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %=~% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %==% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %prop% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %~% y), i, nr); i <- i + 1

> draw.title.cell("Typeface", i, nr); i <- i + 1

> draw.plotmath.cell(expression(plain(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(italic(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(bold(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(bolditalic(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(underline(x)), i, nr); i <- i + 1

> # Need fewer, wider columns for ellipsis ...


> nr <- 20
> nc <- 2

> make.table(nr, nc)


Hit <Return> to see next plot:
$mar
[1] 0 0 0 0

$pty
[1] "s"

> i <- 0

> draw.title.cell("Ellipsis", i, nr); i <- i + 1

> draw.plotmath.cell(expression(list(x[1], ..., x[n])), i, nr); i <- i


+ 1

> draw.plotmath.cell(expression(x[1] + ... + x[n]), i, nr); i <- i + 1

> draw.plotmath.cell(expression(list(x[1], cdots, x[n])), i, nr); i <-


i + 1

> draw.plotmath.cell(expression(x[1] + ldots + x[n]), i, nr); i <- i +


1

> draw.title.cell("Set Relations", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %subset% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %subseteq% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %supset% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %supseteq% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %notsubset% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %in% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %notin% y), i, nr); i <- i + 1

> draw.title.cell("Accents", i, nr); i <- i + 1

> draw.plotmath.cell(expression(hat(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(tilde(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(ring(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(bar(xy)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(widehat(xy)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(widetilde(xy)), i, nr); i <- i + 1

> draw.title.cell("Arrows", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %<->% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %->% y), i, nr); i <- i + 1


> draw.plotmath.cell(expression(x %<-% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %up% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %down% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %<=>% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %=>% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %<=% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %dblup% y), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x %dbldown% y), i, nr); i <- i + 1

> draw.title.cell("Symbolic Names", i, nr); i <- i + 1

> draw.plotmath.cell(expression(Alpha - Omega), i, nr); i <- i + 1

> draw.plotmath.cell(expression(alpha - omega), i, nr); i <- i + 1

> draw.plotmath.cell(expression(phi1 + sigma1), i, nr); i <- i + 1

> draw.plotmath.cell(expression(Upsilon1), i, nr); i <- i + 1

> draw.plotmath.cell(expression(infinity), i, nr); i <- i + 1

> draw.plotmath.cell(expression(32 * degree), i, nr); i <- i + 1

> draw.plotmath.cell(expression(60 * minute), i, nr); i <- i + 1

> draw.plotmath.cell(expression(30 * second), i, nr); i <- i + 1

> # Need even fewer, wider columns for typeface and style ...
> nr <- 20

> nc <- 1

> make.table(nr, nc)


Hit <Return> to see next plot:
$mar
[1] 0 0 0 0

$pty
[1] "s"

> i <- 0

> draw.title.cell("Style", i, nr); i <- i + 1

> draw.plotmath.cell(expression(displaystyle(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(textstyle(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(scriptstyle(x)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(scriptscriptstyle(x)), i, nr); i <- i


+ 1
> draw.title.cell("Spacing", i, nr); i <- i + 1

> draw.plotmath.cell(expression(x ~~ y), i, nr); i <- i + 1

> # Need fewer, taller rows for fractions ...


> # cheat a bit to save pages
> par(new = TRUE)

> nr <- 10

> nc <- 1

> make.table(nr, nc)


$mar
[1] 0 0 0 0

$pty
[1] "s"

> i <- 4

> draw.plotmath.cell(expression(x + phantom(0) + y), i, nr); i <- i +


1

> draw.plotmath.cell(expression(x + over(1, phantom(0))), i, nr); i <-


i + 1

> draw.title.cell("Fractions", i, nr); i <- i + 1

> draw.plotmath.cell(expression(frac(x, y)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(over(x, y)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(atop(x, y)), i, nr); i <- i + 1

> # Need fewer, taller rows and fewer, wider columns for big operators
...
> nr <- 10

> nc <- 1

> make.table(nr, nc)


Hit <Return> to see next plot:
$mar
[1] 0 0 0 0

$pty
[1] "s"

> i <- 0

> draw.title.cell("Big Operators", i, nr); i <- i + 1

> draw.plotmath.cell(expression(sum(x[i], i=1, n)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(prod(plain(P)(X == x), x)), i, nr); i


<- i + 1

> draw.plotmath.cell(expression(integral(f(x) * dx, a, b)), i, nr); i


<- i + 1
> draw.plotmath.cell(expression(union(A[i], i==1, n)), i, nr); i <- i
+ 1

> draw.plotmath.cell(expression(intersect(A[i], i==1, n)), i, nr); i <


- i + 1

> draw.plotmath.cell(expression(lim(f(x), x %->% 0)), i, nr); i <- i +


1

> draw.plotmath.cell(expression(min(g(x), x >= 0)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(inf(S)), i, nr); i <- i + 1

> draw.plotmath.cell(expression(sup(S)), i, nr); i <- i + 1

> make.table(nr, nc)


Hit <Return> to see next plot:
$mar
[1] 0 0 0 0

$pty
[1] "s"

> i <- 0

> draw.title.cell("Grouping", i, nr); i <- i + 1

> draw.plotmath.cell(expression((x + y)*z), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x^y + z), i, nr); i <- i + 1

> draw.plotmath.cell(expression(x^(y + z)), i, nr); i <- i + 1

> # have to do this one by hand


> draw.plotmath.cell(expression(x^{y + z}), i, nr, string="x^{y + z}")
; i <- i + 1

> draw.plotmath.cell(expression(group("(", list(a, b), "]")), i, nr);


i <- i + 1

> draw.plotmath.cell(expression(bgroup("(", atop(x, y), ")")), i, nr);


i <- i + 1

> draw.plotmath.cell(expression(group(lceil, x, rceil)), i, nr); i <-


i + 1

> draw.plotmath.cell(expression(group(lfloor, x, rfloor)), i, nr); i <


- i + 1

> draw.plotmath.cell(expression(group("|", x, "|")), i, nr); i <- i +


1

> par(oldpar)

Type <Return> to start :


Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
Hit <Return> to see next plot:
| Excelente trabajo!

|========================================
| 54%

| Las columnas de texto gris muestran las expresiones en R, y la colum


na de texto
| negra muestra cmo se vern.

...

|===========================================
| 57%

| Para generar estos smbolos matemticos, en R puedes utilizar la fun


cin
| expression(). La funcin expression() recibe como argumento una expr
esin como las
| que viste en color gris. Prubalo. Ingresa plot(1:10, type="n",
| main=expression(alpha + beta)) en la lnea de comandos.

> plot(1:10, type="n",main=expression(alpha + beta))

| Acertaste!

|==============================================
| 61%

| Adems, puedes combinar expression() con la funcin paste() para pod


er tener texto
| y smbolos en una misma sentencia. Ingresa plot(1:10, type="n", xlab
=
| expression(paste("Valores de ", x^phi1))) en la lnea de comandos.

> plot(1:10, type="n", xlab =expression(paste("Valores de ", x^phi1)))

| Excelente trabajo!

|================================================
| 64%

| Si deseas revisar la lista de expresiones disponibles, ingresa ?plot


math en la
| lnea de comandos.

> ?plotmath

| Sigue trabajando de esa manera y llegars lejos!

|===================================================
| 68%

| Adems, puedes utilizar la funcin substitute() que te permitir obt


ener el valor
| de una variable u objeto en R; esto lo podrs usar dentro de una fun
cin paste()
| para generar una expresin.

...
|======================================================
| 71%

| Para mostrar su uso, ingresa t <- 10 en la lnea de comandos.

> t <- 10

| Mantn este buen nivel!

|========================================================
| 75%

| Y ahora ingresa plot(1:t, main=substitute(paste("La grfica del vect


or 1:", x),
| list(x=t))) en la lnea de comandos.

> plot(1:t, main=substitute(paste("La grfica del vector 1:", x),list(


x=t)))

| Esa es la respuesta que estaba buscando.

|===========================================================
| 79%

| Observa el ttulo de la grfica: "La grfica del vector 1:10".

...

|==============================================================
| 82%

| Si ahora cambias el valor de t, ingresa t <- 20 en la lnea de coman


dos.

> t <- 20

| Acertaste!

|================================================================
| 86%

| Y nuevamente grafica plot(1:t, main=substitute(paste("La grfica del


vector 1:",
| x), list(x=t))); cambiar el ttulo de la grfica. Prubalo!

> plot(1:t, main=substitute(paste("La grfica del vector 1:", x), list


(x=t)))

| Todo ese trabajo est rindiendo frutos!

|===================================================================
| 89%

| Notaras que el ttulo cambio.

...

|===================================================================
=== | 93%

| Esto es muy til si quieres obtener grficas donde alguno de los par
metros es
| diferente; as puedes generar mltiples grficas con distintos parm
etros y las
| etiquetas de stos pueden ir cambiando de acuerdo a los parmetros.

...

|===================================================================
===== | 96%

| Para conocer ms acerca de la funcin substitute() ingresa ?substitu


te en la lnea
| de comandos.

> ?substitute

| Bien hecho!

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: No
2: Si

Leccin 11

Selection: 11

| Intentando cargar las dependencias de la leccin...

| Esta leccin requiere el paquete rgl . Quieres que lo instale aho


ra?

1: S
2: No

Selection: 1

| Tratando de instalar el paquete rgl ...


also installing the dependencies xtable, sourcetools, htmlwidgets
, shiny

package xtable successfully unpacked and MD5 sums checked


package sourcetools successfully unpacked and MD5 sums checked
package htmlwidgets successfully unpacked and MD5 sums checked
package shiny successfully unpacked and MD5 sums checked
package rgl successfully unpacked and MD5 sums checked

| El paquete rgl se ha cargado correctamente!

|
| 0%

| En esta leccin vers cmo crear grficas en 3D.

...
|===
| 4%

| Este tipo de grficas no estn implementadas en el sistema de base,


por lo que
| usars rgl.

...

|======
| 8%

| Para ejemplificar esta prctica continuars usando el conjunto de da


tos iris.
| Carga el conjunto de datos iris.

> data(iris)

| Eso es correcto!

|=========
| 12%

| Usa head(iris) para ver las primeras seis lneas de contenido de iri
s.

> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

| Esa es la respuesta que estaba buscando.

|============
| 17%

| Con esto recordars que el conjunto de datos de iris contiene las me


didas de
| longitud y anchura del spalo y ptalo, respectivamente, por 50 flor
es de cada una
| de las tres especies de iris. Las especies de iris son: setosa, vers
icolor y
| virginica.

...

|================
| 21%

| Ingresa x <- iris$Sepal.Length en la lnea de comandos para guardar


la columna que
| contiene las longitudes de spalo de las muestras en la variable x.

> x <- iris$Sepal.Length

| Perseverancia es la respuesta.
|===================
| 25%

| Repite el proceso anterior, pero guarda en la variable y, la columna


que contiene
| las longitudes de ptalo.
> y <- iris$Petal.Length

| Eres el mejor!

|======================
| 29%

| Nuevamente repite el proceso, pero ahora guarda en la variable z la


columna que
| contiene las anchuras de spalo.

> z <- iris$Sepal.Width

| Eso es trabajo bien hecho!

|=========================
| 33%

| Bien; ahora puedes continuar...

...

|============================
| 38%

| rgl es un paquete de grficos 3D que produce grficas interactivas e


n 3D en tiempo
| real. Permite rotar de forma interactiva, ampliar los grficos, etc.
Ingresa ?rgl
| en la lnea de comandos para conocer un poco ms del paquete rgl.

> ?rgl

| Esa es la respuesta que estaba buscando.

|===============================
| 42%

| rgl incluye una interfaz de nivel superior llamada r3d. Esta interfa
z est
| diseada para actuar como los grficos clsicos 2D de R.

...

|==================================
| 46%

| Para inicializar la interfaz 3D usa la funcin open3d(). La funcin


open3d()
| intenta abrir una nueva ventana RGL, utilizando los valores predeter
minados
| especificados por el usuario. Ingresa open3d() en la lnea de comand
os.

> open3d()
wgl
1

| Eres bastante bueno!

|======================================
| 50%

| Ahora puedes utilizar la funcin plot3d(); sta funciona de manera s


imilar a la
| funcin plot() del sistema base de R. En este caso, como es en tres
dimensiones,
| recibe una tripleta de valores, 'x', 'y', 'z', y una vez recibida es
ta tripleta
| dibuja el punto que deseas visualizar.

...

|=========================================
| 54%

| Ingresa plot3d(iris$Sepal.Length, iris$Petal.Length, iris$Sepal.Widt


h) en la lnea
| de comandos.

> plot3d(iris$Sepal.Length, iris$Petal.Length, iris$Sepal.Width)

| Eres bastante bueno!

|============================================
| 58%

| Al igual que con la funcin plot(), la grfica fue construida tomand


o un elemento
| de cada vector; es decir, para construir cada punto plot3d() tomo un
elemento del
| primer vector (posicin x), un elemento del segundo vector (posicin
y) y un
| elemento del tercer vector (posicin z).

...

|===============================================
| 62%

| Notars que algunos valores por defecto son el tipo de grfica (punt
os) y el color
| negro.

...

|==================================================
| 67%

| Al igual que con plot() puedes especificar el tipo de grfica usando


el parmetro
| type. Ingresa plot3d(iris$Sepal.Length, iris$Petal.Length, iris$Sepa
l.Width,
| type="s") en la lnea de comandos.

> plot3d(iris$Sepal.Length, iris$Petal.Length, iris$Sepal.Width, type=


"s")
| Eso es correcto!

|=====================================================
| 71%

| Los tipos soportados son 'p' para puntos, 's' para esferas, 'l' para
lneas, 'h'
| para segmentos de lnea con z = 0, y 'n' para nada.

...

|========================================================
| 75%

| Asimismo, puedes especificar el color usado para graficar a los elem


entos usando
| el parmetro col. Ingresa plot3d(iris$Sepal.Length, iris$Petal.Lengt
h,
| iris$Sepal.Width, type="s", col=rainbow(150)) en la lnea de comando
s.

> plot3d(iris$Sepal.Length, iris$Petal.Length,iris$Sepal.Width, type="


s", col=rainbow(150))

| Todo ese trabajo est rindiendo frutos!

|===========================================================
| 79%

| Algo que debes saber es que si deseas graficar elemento por especie
no podrs
| enviarle al parmetro col iris$Species como lo habas estado haciend
o con la
| funcin plot(). Esta vez tendrs que tratar a iris$Species como ente
ros. Para
| hacer esto ingresa plot3d(iris$Sepal.Length, iris$Petal.Length, iris
$Sepal.Width,
| type="s", col=as.integer(iris$Species)) en la lnea de comandos.

> plot3d(iris$Sepal.Length, iris$Petal.Length, iris$Sepal.Width,type="


s", col=as.integer(iris$Species))

| Muy bien!

|==============================================================
| 83%

| A diferencia de la funcin plot() donde si queras cambiar el tamao


del elemento
| graficado usabas el parmetro cex, en plot3d() si deseas cambiar el
tamao de las
| esferas debes usar el parmetro radius. Ingresa plot3d(iris$Sepal.Le
ngth,
| iris$Petal.Length, iris$Sepal.Width, type="s", col=as.integer(iris$S
pecies),
| radius=1.5) en la linea de comandos.

> plot3d(iris$Sepal.Length,iris$Petal.Length, iris$Sepal.Width, type="


s", col=as.integer(iris$Species),radius=1.5)

| Traes una muy buena racha!


|==================================================================
| 88%

| Si graficas lneas o puntos y deseas cambiar su tamao, el parmetro


radius no te
| servir. Para cambiar el tamao de las lneas plot3d() usa el parme
tro lwd y size
| para cambiar el de los puntos.

...

|===================================================================
== | 92%

| Al igual que con la funcin plot(), usando plot3d() puedes cambiar e


l ttulo de
| los ejes usando xlab, ylab y zlab. Ingresa plot3d(iris$Sepal.Length,
| iris$Petal.Length, iris$Sepal.Width, type="l", col=as.integer(iris$S
pecies), xlab
| ="Sepal.Length", ylab = "Petal.Length", zlab = "Sepal.Width") en la
lnea de
| comandos.

> plot3d(iris$Sepal.Length,iris$Petal.Length, iris$Sepal.Width, type="


l", col=as.integer(iris$Species), xlab="Sepal.Length", ylab = "Petal.L
ength", zlab = "Sepal.Width")

| Lo ests haciendo muy bien!

|===================================================================
===== | 96%

| Para conocer ms opciones de la funcin plot3d(), ve su pgina de ay


uda.

> help("plot3d")

| Lo ests haciendo muy bien!

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: Si
2: No
Leccin 12

Selection: 12
|
| 0%

| R te provee con algunas funciones que te sirven para manipular caden


as de
| caracteres.

...

|==
| 3%

| Recuerda que una cadena contiene todo texto que se encuentre dentro
de un par de
| comillas. Guarda la cadena "Hola Mundo!" en la variable texto.

> texto<-c("Hola Mundo")

| No exactamente. Dele otra oportunidad. O escribe info() para ms opc


iones.

> texto <- "Hola Mundo!"

| Acertaste!

|====
| 5%
| Observa que una cadena es un vector de caracteres, pero no se puede
acceder
| directamente a sus elementos usando la notacin de indexado([]). Ing
resa texto[1]
| en la lnea de comandos para comprobar esto.

> texto[1]
[1] "Hola Mundo!"

| Traes una muy buena racha!

|======
| 8%

| Y ahora ingresa texto[2] en la lnea de comandos.

> texto[2]
[1] NA

| Buen trabajo!

|========
| 11%

| Esto se debe a que el acceso a los elementos de una cadena se realiz


a con la
| funcin substring(). Para conocer el uso de substring() abre su pgi
na de ayuda.

> ?substring

| Acertaste!

|==========
| 13%

| Ahora que conoces su uso, usando la funcin substring obtn la subca


dena "Mundo"
| de la variable texto.

> substring(texto, 7, 11)


[1] "Mundo"

| Eres el mejor!

|============
| 16%

| Pero no slo eso; esta funcin puede tambin utilizarse en asignaci


n, lo cual
| tiene el efecto colateral de cambiar las cadenas originales. Para de
mostrar esto
| ingresa substring(texto, 7, 11) <- "Swirl" en la lnea de comandos.

> substring(texto, 7, 11) <- "Swirl"

| Excelente trabajo!

|==============
| 18%

| Ahora imprime el contenido de la variable texto.


> texto
[1] "Hola Swirl!"

| Lo has logrado! Buen trabajo!

|================
| 21%

| Si deseas conocer la longitud de una cadena, no podrs hacer uso de


la funcin
| length(). En cambio debers usar la funcin nchar(). Ingresa nchar(t
exto) en la
| lnea de comandos para conocer la longitud de texto.

> nchar(texto)
[1] 12

| Mantn este buen nivel!

|==================
| 24%

| Anteriormente usaste la funcin paste(), la cual concatena las caden


as que le sean
| pasadas como argumento. Ingresa paste("Adis", "Mundo!") en la lne
a de comandos.

> paste("Adis", "Mundo!")


[1] "Adis Mundo!"

| Perseverancia es la respuesta.

|====================
| 26%

| Debes de saber que por omisin estas cadenas son separadas por un es
pacio, pero
| puedes cambiar el comportamiento usando el argumento sep. Ingresa pa
ste("Adis",
| "Mundo!", sep="_") en la lnea de comandos.

> paste("Adis", "Mundo!", sep="_")


[1] "Adis_Mundo!"

| Es asombroso!

|======================
| 29%

| Sin embargo, a menudo es ms conveniente para crear una cadena legib


le usar la
| funcin sprintf(), la cual tiene sintaxis del lenguaje C.

...

|========================
| 32%

| Por ejemplo, crea la variable i y guarda el nmero 9 en ella.

> i<-9
| Muy bien!

|==========================
| 34%

| Si quisieras conformar una cadena que te diera la informacin sobre


i. Puedes
| usar la funcin sprintf() y usar la cadena especial "%d" en cada lug
ar donde
| quieras hacer uso de un valor numrico; en este caso i. Ingresa sp
rintf("El
| cuadrado de %d es %d", i, i^2) en la lnea de comandos.

> sprintf("Elcuadrado de %d es %d", i, i^2)


[1] "Elcuadrado de 9 es 81"

| Eso no es precisamente lo que buscaba. Trata otra vez. O escribe inf


o() para ms
| opciones.

> sprintf("El cuadrado de %d es %d", i, i^2)


[1] "El cuadrado de 9 es 81"

| Excelente trabajo!

|============================
| 37%

| La funcin sprintf() ensambla una cadena formateada con los valores


que vayas
| pidiendo. Ingresa ?sprintf en la lnea de comandos para conocer ms
acerca de
| ella.

> ?sprintf

| Eso es correcto!

|==============================
| 39%

| Contrario a la funcin paste() tienes la funcin strsplit(), la cual


subdivide una
| cadena en cadenas ms pequeas, dependiendo de la cadena indicada co
mo separacin.
| Ingresa strsplit("Me/gusta/programar/en/R", "/") en la lnea de coma
ndos.

> strsplit("Me/gusta/programar/en/R", "/")


[[1]]
[1] "Me" "gusta" "programar" "en" "R"

| Perseverancia es la respuesta.

|================================
| 42%

| Anteriormente usaste la funcin chartr() para sustituir caracteres e


n cadenas.
| Ingresa chartr("o", "a", "Hola Mundo!") en la lnea de comandos.
> chartr("o", "a", "Hola Mundo!")
[1] "Hala Munda!"

| Lo ests haciendo muy bien!

|==================================
| 45%

| Muchas veces necesitars reemplazar un texto con otro y chartr() fun


cionar
| perfectamente.

...

|====================================
| 47%

| Pero muchas otras lo que querrs hacer ser ms complejo, porque pue
de que en vez
| de ser un simple texto querrs reemplazar todas las palabras que ter
minen con a.

...

|======================================
| 50%

| En estos casos puedes utilizar expresiones regulares (que suelen lla


marse "regex"
| o "regexp" de forma abreviada).

...

|=======================================
| 53%

| Las expresiones regulares o patrones no son ms que una especie de c


omodn o un
| atajo para referirse a una gran cantidad de cadenas.

...

|=========================================
| 55%

| A diferencia de otros lenguajes, en los que las expresiones regulare


s se encierran
| entre algn tipo especial de delimitadores, en R una expresin regul
ar se
| representa como una cadena de texto.

...

|===========================================
| 58%

| Por ejemplo, el grupo formado por las cadenas "Handel", "Hndel" y "
Haendel" se
| describe mediante el patrn "H(a||ae)ndel".

...
|=============================================
| 61%

| Habitualmente las expresiones regulares se pasan como argumentos de


una funcin,
| que utiliza el patrn representado por ellas para realizar alguna ta
rea como
| bsqueda o sustitucin.

...

|===============================================
| 63%

| Para ejemplificar esto guarda la cadena "H(a||ae)ndel" en la variab


le patron.

> patro<-"H(a||ae)ndel"

| Mantn este buen nivel!

|=================================================
| 66%

| Una de las funciones que trabaja con expresiones regulares es grep()


. Esta funcin
| toma como argumentos primero un patrn y como segundo argumento un v
ector de
| cadenas y grep() te regresa un vector numrico, el cual contiene los
ndices de
| las cadenas que contienen ese patrn.

...

|===================================================
| 68%

| Para probar grep() he creado un vector de cadenas y lo guarde en la


variable
| musicos. Revisa el contenido de musicos.

> musicos
[1] "Handel" "Mendel" "Haendel" "Hndel" "Handemore" "hande
l"

| Bien hecho!

|=====================================================
| 71%

| Ahora ingresa grep(patron, musicos) en la lnea de comandos.

> grep(patron, musicos)


[1] 1 3

| Bien hecho!

|=======================================================
| 74%
| Efectivamente grep() te regres las posiciones de las cadenas que co
ntienen el
| patrn "H(a||ae)ndel"; es decir, las posiciones de las cadenas "Han
del", "Hndel"
| , "Haendel".

...

|=========================================================
| 76%

| Es importante que sepas que el patrn es sensible a maysculas; esto


explica por
| qu no encontr coincidencia en la cadena "handel".

...

|===========================================================
| 79%

| Como ya te habrs imaginado el carcter "|" dentro de una expresin


regular no
| representa ms que un OR; es decir, el patrn te indica a las cadena
s: "Handel" o
| "Hndel" o "Haendel".

...

|=============================================================
| 82%

| Si deseas construir un patrn que adems incluya las cadenas "Mendel


" y "handel",
| puedes hacerlo de la siguiente manera ".(a||ae|e)ndel". Ingresa nue
vo_patron <-
| ".(a||ae|e)ndel" en la lnea de comandos.

> nuevo_patron <-".(a||ae|e)ndel"

| Acertaste!

|===============================================================
| 84%

| Donde el "." indica un carcter simple, por lo que cuando lo utiliza


s dentro de la
| expresin regular ests diciendo que no te importa qu carcter est
ah,
| cualquier carcter cazar con la expresin regular. Ingresa grep(nue
vo_patron,
| musicos) para comprobar esto.

> grep(nuevo_patron,musicos)
[1] 1 2 3 6

| Es asombroso!

|=================================================================
| 87%

| Otra funcin que trabaja con expresiones regulares es regexpr(), que


al igual que
| grep() recibe como primer argumento un patrn y como segundo un vect
or de cadenas.
| A diferencia de grep(), regexpr() regresa el ndice en donde encuent
ra la primera
| aparicin del patrn que ests buscando. Prueba la funcin; ingresa
| regexpr(patron, musicos) en la lnea de comandos.

> regexpr(patron, musicos)


[1] 1 -1 1 -1 -1 -1
attr(,"match.length")
[1] 6 -1 7 -1 -1 -1

| Es asombroso!

|===================================================================
| 89%

| Adems de regresar el ndice en donde encuentra la primera aparicin


del patrn,
| tambin te regresa la longitud del patrn encontrado. Si no encuentr
a el patrn
| notars que te regresa como ndice y longitud un -1.

...

|===================================================================
== | 92%

| Si deseas encontrar todas las posiciones donde es encontrado el patr


n y no slo
| la primera, puedes usar gregexpr(), ya que funciona de la misma mane
ra que
| regexpr(), slo que te regresa todos los ndices donde encuentra el
patrn. Por
| ejemplo, ingresa gregexpr(patron, "Georg Friedrich Hndel, en ingls
George
| Frideric Handel fue un compositor alemn.") en la lnea de comandos.

> gregexpr(patron, "Georg Friedrich Hndel, en ingls George Frideric


Handel fue un compositor alemn.")
[[1]]
[1] 17 51
attr(,"match.length")
[1] 6 6

| Esa es la respuesta que estaba buscando.

|===================================================================
==== | 95%

| Las expresiones regulares pueden ser muy ricas e incluso muy complic
adas. El
| objetivo del curso no define que las veas a profundidad, pero puedes
ver cmo las
| utiliza R usando ?regexpr. Intntalo.

> ?regexpr

| Mantn este buen nivel!


|===================================================================
====== | 97%

| Aqu puedes ver todas las expresiones que te sirven para utilizar ex
presiones
| regulares dentro del lenguaje con las funciones que acabas de ver.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: Si
2: No

Leccin 13

Selection: 13

| Intentando cargar las dependencias de la leccin...

| El paquete ggplot2 se ha cargado correctamente!

|
| 0%

| ggplot2 es un sistema de graficacin muy poderoso en R que te provee


con grficos
| de alto nivel.

...

|==
| 3%

| Este modelo de grficos hace fcil la produccin de grficos complej


os.

...

|====
| 6%

| No tendrs que preocuparte por las leyendas, los tipos de fuentes y


dems detalles
| a diferencia de usar el paquete base, ya que ggplot2 trae valores po
r omisin.

...

|======
| 9%

| Ya que estos valores por omisin fueron cuidadosamente escogidos, lo


que significa
| que la mayor parte del tiempo t puedes producir grficas de tan bue
na calidad que
| pueden utilizarse inmediatamente en publicaciones.

...

|=========
| 11%

| En esta prctica trabajars con el conjunto de datos diamonds del pa


quete ggplot2,
| el cual contiene las medidas, informacin de calidad y precios de ca
si 54 000
| diamantes.

...

|===========
| 14%

| Para cargar el conjunto de datos diamonds ingresa data(diamonds) en


la lnea de
| comandos.

> data(diamonds)

| Muy bien!

|=============
| 17%

| Ahora ve lo que contiene diamonds. Para hacer esto usars la funcin


View(). Si te
| encuentras en Rstudio simplemente puedes presionar el nombre de tu v
ariable
| diamonds en el apartado Entorno ("Environment") y se mostrar su con
tenido.
| Presiona la variable diamonds en Rstudio o ingresa en la lnea de co
mando:
| View(diamonds).

> View(diamonds)

| Acertaste!

|===============
| 20%

| carat representa el peso del diamante, cut representa la calidad del


corte (Fair,
| Good, Very Good, Premium, Ideal), color representa el color del diam
ante, desde J
| (el peor) a D (el mejor), clarity es una medida de qu tan claro es
el diamante
| (I1 (el peor), SI1, SI2, VS1, VS2, VVS1, VVS2, IF (el mejor)).

...

|=================
| 23%
| table indica la anchura de la parte superior del diamante con relaci
n al punto
| ms ancho, price representa el precio del diamante en dlares, x la
longitud en
| milmetros, y la anchura en milmetros, z la profundidad en milmetr
os y depth el
| porcentaje de profundidad total, es decir, z / mean(x, y) = 2 * z /
(x + y).

...

|===================
| 26%

| Dominar el paquete ggplot2 puede ser un reto, por lo que en este cur
so slo vers
| la funcin qplot() (quick plot), la cual es una funcin auxiliar, ya
que esconde
| mucha de su complejidad cuando crea grficos estndares.

...

|=====================
| 29%

| La funcin qplot() puede ser usada para crear los tipos de grficas
ms comunes.
| Mientras que no expone las grandes capacidades de ggplot2, puede cre
ar un gran
| rango de grficas tiles.

...

|========================
| 31%

| Ingresa ?qplot para conocer ms acerca de ella.

> ?qplot

| Eso es trabajo bien hecho!

|==========================
| 34%

| Puedes hacer desde histogramas. Ingresa qplot(color, data=diamonds)


para crear un
| histograma de los colores.

> qplot(color, data=diamonds)

| Acertaste!

|============================
| 37%

| Hasta grficas de dispersin. Ingresa qplot(carat, price, data=diamo


nds) en la
| lnea de comandos.

> qplot(carat, price, data=diamonds)


| Esa es la respuesta que estaba buscando.

|==============================
| 40%

| Puedes ver que hay mucha saturacin por la gran cantidad de datos qu
e hay al usar
| el dataset completo.

...

|================================
| 43%

| Existe cierta correlacin para ser exponencial y hay ciertos lugares


donde parecen
| hacerse estras. Esto puedes tratar de compensarlo haciendo una tran
sformacin de
| las variables; es decir, en lugar de usar los valores lineales, podr
as aplicar
| una transformacin logartmica y entonces estaras graficando los va
lores
| logartmicos contra los valores logartmicos de 'x' y 'y'. Ingresa
| qplot(log(carat), log(price), data=diamonds) en la lnea de comandos
para lograr
| esto.

> qplot(log(carat), log(price), data=diamonds)

| Buen trabajo!

|==================================
| 46%

| Tambin puedes utilizar los argumentos como combinaciones de otros.


Ingresa
| qplot(carat, x*y*z, data=diamonds) en la lnea de comandos.

>
> qplot(carat, x*y*z, data=diamonds)

| Toda esa prctica est rindiendo frutos!

|====================================
| 49%

| En ggplot2() puedes mapear alguna categora que tenga una variable a


un atributo
| esttico, en este caso el atributo color de qplot(); por ejemplo, si
utilizas
| diamonds puedes mapear la columna color que te indica el color del d
iamante a un
| color distinto en la grfica. Ingresa qplot(carat, price, data=diamo
nds,
| color=color) en la lnea de comandos.

> qplot(carat, price, data=diamonds,color=color)

| Sigue trabajando de esa manera y llegars lejos!

|=======================================
| 51%
| Adems del color otro atributo esttico que tiene qplot() es shape;
shape se
| refiere a la forma con la que va a pintar los puntos qplot(); en la
grfica por
| ejemplo shape tambin es muy bueno para poder mapear caractersticas
categricas a
| una caracterstica grfica.

...

|=========================================
| 54%

| Puedes mapear cada uno de los cortes distintos de los diamantes que
tienes a una
| figura distinta. Ingresa qplot(carat, price, data=diamonds, shape=cu
t) en la lnea
| de comandos.

> qplot(carat, price, data=diamonds, shape=cut)

| Bien hecho!

|===========================================
| 57%

| El atributo alpha de qplot() indica cuntos puntos se necesitan pint


ar o aparecer
| en un mismo lugar para que puedas pintar un punto completamente opac
o. Ingresa
| qplot(carat, price, data=diamonds, alpha=I(1/10)) en la lnea de com
andos.

> qplot(carat, price, data=diamonds, alpha=I(1/10))

| Mantn este buen nivel!

|=============================================
| 60%

| Con esto necesitaras 10 puntos en un mismo lugar para que se pinte


un primer
| punto.

...

|===============================================
| 63%

| Nota cmo si cambias el alpha de un 1/10 a un 1/100 puedes encontrar


nuevos
| patrones que no eran claros cuando usabas un alpha ms grande. Int
ntalo!

> qplot(carat, price, data=diamonds, alpha=I(1/100))

| Eres el mejor!

|=================================================
| 66%
| size, es un atributo que indica el tamao, por lo que si usas size=t
able te
| pintar los puntos de diferente tamao. Ingresa qplot(carat, price,
data=diamonds,
| size=table) en la lnea de comandos.

> qplot(carat, price, data=diamonds,size=table)

| Excelente!

|===================================================
| 69%

| Debes de saber que algunas variables se mapean mejor a ciertos atrib


utos
| estticos; por ejemplo, color y shape se mapean mejor a variables ca
tegricas,
| mientras que size se mapea mejor a variables de tipo continuo.

...

|======================================================
| 71%

| A veces la cantidad de datos puede hacer una gran diferencia y ya vi


ste que puede
| usar alpha para cambiar la saturacin mayor o menor dependiendo del
nmero de
| puntos que tengas. Si esto no te ayuda entonces puedes tratar de sub
dividir los
| grupos de las variables que se forman en una sola variable con una t
cnica
| especial conocida como faceting.

...

|========================================================
| 74%

| El atributo facets te permite crear una tabla donde puedes subdividi


r en grupos.
| Si quisieras ver cmo se comporta la variable carat contra la variab
le price y le
| pides que te haga el faceting por color, entonces por cada color de
diamante te va
| graficando el carat contra el price (peso vs precio). Ingresa qplot(
carat, price,
| data=diamonds, facets = color ~ .) en la lnea de comandos.

> qplot(carat, price,data=diamonds, facets = color ~ .)

| Mantn este buen nivel!

|==========================================================
| 77%

| Entonces puedes observar cmo se va comportando para cada uno de los


colores de
| diamante. Esto te permite la comparacin visual inmediata.

...
|============================================================
| 80%

| Por ltimo, el atributo geom de qplot() especifica el tipo de objeto


que utilizar
| para graficar. El valor por defecto es "point" (punto); esto slo si
x y y se
| encuentran especificados. Si slo x se encuentra especificado el val
or es
| "histogram" (histograma).

...

|==============================================================
| 83%

| Un posible valor para geom es "smooth", el cual ajusta una curva a l


os puntos que
| estas especificando, adems de que te dibuja el error estndar de es
a curva.
| Ingresa qplot(carat, price, data=diamonds, geom = c("point", "smooth
")) en la
| lnea de comandos.

> qplot(carat, price, data=diamonds, geom = c("point", "smooth"))


`geom_smooth()` using method = 'gam'
`geom_smooth()` using method = 'gam'

| Sigue trabajando de esa manera y llegars lejos!

|================================================================
| 86%

| Una caracterstica de "smooth" es que puedes especificar el tipo de


ajuste que
| quieres para la curva.

...

|==================================================================
| 89%

| Otro valor posible es "jitter", el cual permite analizar en cajas c


mo se estn
| dispersando los puntos, dependiendo de las variables que quieras obs
ervar. Ingresa
| qplot(color, price/carat, data=diamonds, geom = "jitter") en la lne
a de comandos.

> qplot(color, price/carat, data=diamonds, geom = "jitter")

| Todo ese trabajo est rindiendo frutos!

|===================================================================
== | 91%

| Si usas geom="boxplot" te graficar una grfica de caja, donde puede


s observar la
| distribucin de tus datos por la categora que quieras observar. Ing
resa
| qplot(color, price/carat, data=diamonds, geom = "boxplot") en la ln
ea de
| comandos.

> qplot(color, price/carat, data=diamonds, geom = "boxplot")

| Es asombroso!

|===================================================================
==== | 94%

| Otros dos valores importantes que puede tomar geom son "line" y "pat
h".

...

|===================================================================
====== | 97%

| Actualmente, ggplot2 no puede ser usado para crear grficas 3D.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: Si
2: No

Leccion 14

Selection: 14
|
| 0%

| Esta leccin asume que tienes familiaridad con algunas distribucione


s de
| probabilidad. Aun si no tienes ninguna experiencia con estos concept
os, sers
| capaz de completar esta leccin y entender las ideas generales.

...

|===
| 4%

| R contiene por defecto muchas distribuciones de probabilidad. Por ej


emplo, si
| ingresas ?Normal, obtendrs informacin acerca de la distribucin no
rmal.

> ?Normal

| Toda esa prctica est rindiendo frutos!


|=====
| 7%

| Usualmente cada distribucin tendr 4 funciones de la forma prefijo


+
| apodo_distribucion. Cada prefijo indica: r - la funcin para generar
nmeros
| aleatorios, p - la funcin de distribucin, d - la funcin de densid
ad, q - la
| funcin que te da cuantiles.

...

|========
| 11%

| A todas estas funciones les puedes especificar la media y la varianz


a de la
| distribucin.

...

|===========
| 14%

| En general, la primera letra de la funcin determina qu informacin


obtendrs
| acerca de la distribucin y luego el apodo_distribucin sigue direct
amente.

...

|=============
| 18%

| Por ejemplo, si quisieras la funcin de densidad de la distribucin


Poisson usas
| dpois(). A continuacin se muestran algunas distribuciones tiles.

(Se ha copiado el archivo distributions.txt a la ruta C:/Users/rober/D


ocuments/swirl_temp/distributions.txt ).
...

|================
| 21%

| Para obtener una lista completa de las distribuciones disponibles en


R, ingresa
| help(Distributions) en la lnea de comandos.

> help(Distributions)

| Tu dedicacin es inspiradora!

|===================
| 25%

| Es importante que revises que las funciones definan la distribucin


de la manera
| que t esperas.

...
|=====================
| 29%

| Ahora vers cmo estas funciones te pueden ayudar para resolver un p


roblema de
| simulacin.

...

|========================
| 32%

| Supn que quisieras encontrar la probabilidad de tener al menos 5 ca


ras al lanzar
| 7 veces una moneda justa.

...

|===========================
| 36%

| Recuerda que el lanzamiento de una moneda puede ser modelado por una
variable
| aleatoria bernoulli.

...

|=============================
| 39%

| Es decir, donde p es la probabilidad de xito; en este caso que caig


a una cara,
| por lo que 1-p es la probabilidad de fracaso, es decir, que no caiga
cara.

...

|================================
| 43%

| Y ahora puedes usar una variable aleatoria binomial que te dice el n


mero de
| xitos en n repeticiones de experimentos bernoulli. Esta variable al
eatoria la
| puedes modelar con la funcin rbinom(). No olvides que si n=1 el exp
erimento que
| estars observando es el lanzamiento de una moneda (el caso ms simp
le).

...

|===================================
| 46%

| En este caso puedes usar n=7 que son los 7 lanzamientos de la moneda
.

...

|======================================
| 50%
| Ahora vas a generar esos nmeros aleatorios usando la funcin rbinom
(). Antes que
| nada ingresa ?rbinom en la lnea de comandos para conocer su uso.

> ?rbinom

| Buen trabajo!

|========================================
| 54%

| Como te podrs dar cuenta rbinom() se encuentra definida as: rbinom


(n, size,
| prob), donde n indica el nmero de veces que se va a llevar a cabo e
l experimento.
| size dice el nmero de intentos; en este caso el nmero de lanzamien
tos que se van
| a llevar a cabo. Y prob indica la probabilidad de xito en cada inte
nto; en este
| caso que caiga cara.

...

|===========================================
| 57%

| Si quisieras llevar a cabo este experimento una nica vez, es decir,


lanzar 7
| veces una moneda con probabilidad 1/2 de xito (es decir, que la mon
eda sea
| justa), debers llamar a rbinom() de la siguiente manera: ingresa rb
inom(1, 7,
| 0.5) en la lnea de comandos.

> rbinom(1, 7,0.5)


[1] 5

| Eres el mejor!

|==============================================
| 61%

| El resultado que obtuviste slo te indica el nmero de xitos que ob


tuviste en un
| nico experimento, es decir, el nmero de caras que salieron.

...

|================================================
| 64%

| Si quisieras sacar la proporcin de xitos que tendras, habra que


llevar a cabo
| este experimento una gran cantidad de veces.

...

|===================================================
| 68%
| Con R lo puedes justificar de manera intuitiva, aplicando este exper
imento muchas
| veces. En este caso repite el experimento 100 000 veces y gurdalo e
n la variable
| 'resultado'.

> resultado<-rbinom(100000, 7,0.5)

| Esa es la respuesta que estaba buscando.

|======================================================
| 71%

| Como ya te podrs imaginar, 'resultado' contiene el nmero de caras


que salieron
| por cada experimento; en este caso 100 000. Ingresa tail(resultado)
para conocer
| el resultado de los ltimos 6 experimentos.

> tail(resultado)
[1] 2 5 3 3 3 4

| Excelente!

|========================================================
| 75%

| Una vez teniendo los resultados de aplicar este experimento 100 000
veces, puedes
| encontrar cuntos de esos experimentos tuvieron 5 veces o ms xito.
Ingresa
| tail(resultado > 5) en la lnea de comandos.

> tail(resultado > 5)


[1] FALSE FALSE FALSE FALSE FALSE FALSE

| Esa es la respuesta que estaba buscando.

|===========================================================
| 79%

| Teniendo este vector ahora puedes encontrar la proporcin de verdade


ros contra
| falsos sacando la media. Ingresa mean(resultado > 5) en la lnea de
comandos.

> mean(resultado > 5)


[1] 0.06276

| Bien hecho!

|==============================================================
| 82%

| Con esto has encontrado la probabilidad de tener al menos 5 caras al


lanzar 7
| veces una moneda justa.

...

|================================================================
| 86%
| Te preguntars cmo sacaste la media de un vector de valores lgicos
; recuerda que
| esto es posible debido a la coercin.

...

|===================================================================
| 89%

| Por ltimo, es posible que desees que tus resultados sean replicable
s. La funcin
| set.seed() te permite establecer el punto de inicio en la generacin
de nmeros
| aleatorios. Ingresa ?set.seed en la lnea de comandos.

> ?set.seed()

| Casi! Vuelve a intentar de nuevo. O escribe info() para ms opcione


s.

> ?set.seed

| Muy bien!

|===================================================================
=== | 93%

| Como vers, si estableces la misma semilla antes de generar nmeros


Aleatorios,
| siempre obtendrs los mismos nmeros aleatorios.

...

|===================================================================
===== | 96%

| Ten en cuenta que no siempre es lo que puedas necesitar.

...

|===================================================================
========| 100%

| Has concluido la leccin. Te gustara que se le notificar a Course


ra que has
| completado esta leccin?

1: Si
2: No

Vous aimerez peut-être aussi