Conceptos B´asicos de
R
Linkedin: Alvaro Miguel Naupay Gusukuma
k z anaupay@hotmail.com
blog: http://mat-alvaro.blogspot.c...
El lenguaje R
• Fue inspirado en S, creado en Laboratorios Bell por John
Chambers y sus colaboradores Rick Becker, Allan W...
El proyecto R (The R project)
• El Proyecto R es una colaboraci´on internacional de
investigadores de estad´ıstica computa...
Conceptos b´asicos de R
• R es un lenguaje de computadora que es procesado por
un programa especial llamado int´erpretre. ...
Comandos importantes
getwd()
setwd("direcci´on.extension")
Usando R como calculadora
• Los usuarios escriben expresiones al interprete de R.
• R responde mediante el c´alculo e impr...
Agrupar y Evaluar
• Se aplican las reglas aritm´eticas normales, multiplicaci´on
y divisi´on se ejecuta antes que la adici...
Agrupar y Evaluar
• Se aplican las reglas aritm´eticas normales, multiplicaci´on
y divisi´on se ejecuta antes que la adici...
Prioridad del operador
• Los operadores b´asicos de R tienen las siguientes
prioridades (listados en orden de mayor a meno...
Prioridad del operador
• Los operadores b´asicos de R tienen las siguientes
prioridades (listados en orden de mayor a meno...
Orden de evaluaci´on
• Evaluaci´on de las operaciones de la misma prioridad se
llevan a cabo de izquierda a derecha (con e...
Funciones de R
> sqrt(2)
[1] 1.414214
> log(10)
[1] 2.302585
> log10(10)
[1] 1
> sin(1)
[1] 0.841471
> 4 * atan(1)
[1] 3.1...
Funciones de R
> sqrt(2)
[1] 1.414214
> log(10)
[1] 2.302585
> log10(10)
[1] 1
> sin(1)
[1] 0.841471
> 4 * atan(1)
[1] 3.1...
Asignaciones
• Los valores son almacenados asignando estos a un
nombre.
• Resultando un par nombre-valuado que es llamado
...
Usando variables
• Las variables pueden ser usadas en expresiones de la
misma forma que los n´umeros.
Usando variables
• Las variables pueden ser usadas en expresiones de la
misma forma que los n´umeros.
• Por ejemplo
> val ...
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados e...
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados e...
Vectores num´ericos
R tiene la capacidad de trabajar con vectores de valores.
Valores individuales pueden ser combinados e...
Sucesiones
Una manera simple de generar vectores es usando el
operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on d...
Sucesiones
Una manera simple de generar vectores es usando el
operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on d...
Combinando vectores
La funci´on “ c ” puede ser usada para combinar vectores y
escalares dentro de un vector
> x = c(1, 2,...
Combinando vectores
La funci´on “ c ” puede ser usada para combinar vectores y
escalares dentro de un vector
> x = c(1, 2,...
Aritm´etica de vectores
Porque “todo es un vector” es natural esperar que la
variable definida “ x ” anteriormente se pueda...
Aritm´etica de vectores
Porque “todo es un vector” es natural esperar que la
variable definida “ x ” anteriormente se pueda...
Regla del reciclaje(rehusar)
Lo que es menos obvio acerca de la aritm´etica de vectores
es lo que sucede cuando dos vector...
Regla del reciclaje(rehusar)
Lo que es menos obvio acerca de la aritm´etica de vectores
es lo que sucede cuando dos vector...
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El ter...
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El ter...
Elementos y subconjuntos
Elementos individules pueden ser extraidos desde de los
vectores especificando sus indices. El ter...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Elementos y subconjuntos
Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo
siguiente
Ejercicios: Dado el vecto...
Sub´ındice negativo
A veces, en vez de la extracci´on de los elementos de un
vector correspondiente a un determinado conju...
Sub´ındice negativo
A veces, en vez de la extracci´on de los elementos de un
vector correspondiente a un determinado conju...
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es...
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es...
Cambiando subconjunto de vectores
Adem´as de la extracci´on de los valores en las posiciones
particulares en un vector, es...
Valores num´ericos especiales - Infinito
Cuando uno es dividido por cero, el resultado es infinito.
Este tipo de resultado e...
Valores num´ericos especiales - Infinito
Infinito tiene todas las propiedades que se puede esperar.
Por ejemplo
> 1 + Inf
[1...
Valores num´ericos especiales - Not a Number
Not a Number = No es un n´umero.
R tambi´en tiene un valor especial, llamado ...
Valores num´ericos especiales - Not avaliable
Not avalaible = No disponible
R tiene un valor particular que es usado para ...
Resumen de funciones - min, max y range
Las funciones min y max retorna el m´ınimo y el m´aximo de
los valores contenidos ...
Resumen de funciones - sum, prod y diff
Las funciones sum y prod calculan la suma y el producto de
todos los elementos en ...
Resumen de funciones y NA
En cualquier de las funciones presentadas la presencia de
NA y NaN en cualquiera de los argument...
Acumulados
> cumsum(1:10)
[1] 1 3 6 10 15 21 28 36 45 55
> cumprod(1:6)
[1] 1 2 6 24 120 720
> cummax(1:10)
[1] 1 2 3 4 5 ...
Funciones paralelas
Finalmente, hay versiones paralelas de las funciones
m´aximo y m´ınimo. Estas toman un n´umero de vect...
Vectores l´ogicos
Los vectores l´ogicos contiene los valores TRUE y FALSE.
> b = c(TRUE, TRUE, FALSE, FALSE)
Tambi´en se p...
Generando valores l´ogicos
Los valores l´ogicos se producen a menudo como resultado
de afirmaciones hechas sobre otros tipo...
Operadores de comparaci´on
El conjunto completo de operadores l´ogicos se muestra a
continuaci´on. Todos los operadores re...
Las conjunciones l´ogicas
Los valores l´ogicos se pueden combinar con los operadores
booleanos, “ & ” que denota la l´ogic...
Negaci´on
El operador ! es usado para indicar la negaci´on l´ogica.
Este cambia TRUE en FALSE y viceversa.
> !(3 < 4)
[1] ...
L´ogica y valores NA
Los vectores l´ogico pueden contener valores NA. Esto
produce una l´ogica de tres valores.
x & y y
TR...
Subdivisi´on l´ogica
Es posible extraer subconjuntos de vectores mediante el uso
de valores l´ogicos.
Como ejemplo, consid...
Selecci´on condicional
La funci´on ifelse (ifelse(test, yes, no)), la funci´on
hace posible elegir entre los elementos de ...
Vector de caracteres
Vectores de caracteres tienen elementos que son cadenas de
caracteres.
Cadenas de carateres son carac...
Manipulaci´on de cadenas
La funci´on nchar retorna la longitud de las cadenas de
caracteres en un vector de caracteres
> s...
Pegando cadenas
Las cadenas pueden ser “ pegadas ” con paste.
> paste("primero","segundo","tercero")
[1] "primero segundo ...
Pegando vectores
paste trabajar´a con vectores, as´ı como cadenas simples. El
resultado es definido por la regla de recicla...
Vectores complejo-valuados
Los vectores pueden contener valores como n´umeros
complejos. Estos son escritos en la notaci´o...
Modalidad y longitud de un vector
Los vectores tienen asociada una modalidad(mode) (una de
"logical", "numeric", "complex"...
Creando vectores
Una funci´on llamada vector puede tambi´en ser usada para
crear vectores de cualquiera de los 4 tipos b´a...
Coerci´on de tipos
Los tipos son autom´aticamente convertidos o
coercidos(coaccionados) en R si la necesidad surge.
> c(TR...
Idiomas de la coerci´on de tipos
La coerci´on est´a en el coraz´on de varios idiomas en R. Un
ejemplo com´un es contar el ...
Coerci´on expl´ıcita
R forzar´a autom´aticamente coerciona vectores utilizando el
orden natural de modo vector. Otras ocac...
Vectores nombrados
Vectores de cualquiera de los tipos b´asicos pueden ser
aumentados para proporcionar nombres a sus elem...
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos y subvectores. Si v se define...
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos y subvectores. Si v se define...
Subconfiguraci´on usando nombres
los nombres pueden tambi´en ser usados para extraer
elementos y subvectores. Si v se define...
Listas con nombres
Los elementos de una lista pueden ser nombrados. Esto se
puede hacer con la funci´on names o directamen...
Elementos y subconjuntos de listas
Cuando preguntamos por un elemento de una lista, usar [[
]]. Cuando preguntamos por un ...
Extracci´on de elementos con nombre
Elementos con nombre pueden ser extraidos de una lista de
la misma manera que los elem...
El objeto NULL
Existe un objeto especial en R llamado el objeto NULL que
es usado para representar “ nada ”. El objeto NUL...
Upcoming SlideShare
Loading in …5
×

Conceptos básicos de R

567 views

Published on

Se muestra loa conceptos básicos de R

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
567
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Conceptos básicos de R

  1. 1. Conceptos B´asicos de R Linkedin: Alvaro Miguel Naupay Gusukuma k z anaupay@hotmail.com blog: http://mat-alvaro.blogspot.com/ August 15, 2013
  2. 2. El lenguaje R • Fue inspirado en S, creado en Laboratorios Bell por John Chambers y sus colaboradores Rick Becker, Allan Wilks y Duncan Temple Lang entre los a˜nos 1975 y 1998. • R es un lenguaje de computaci´on (y asociado a un entorno computacional) para llevar acabo c´alculos estad´ısticos. • Parece muy similar a S, pero la similitud fue reestructurada encima de piezas de software muy diferentes. • R fue creado por Robert Gentleman y Ross Ihaka en la Universidad de Aukland como banco de prueba para probar algunas ideas estad´ısticas. • Ahora se ha convertido en una herramienta con todas las funciones para llevar a cabo c´alculos estad´ısticos y otras cosas m´as.
  3. 3. El proyecto R (The R project) • El Proyecto R es una colaboraci´on internacional de investigadores de estad´ıstica computacional. • Hay aproximadamente 20 miembros en el equipo principal de R, que mantienen y mejoran a R. • Las ediciones del entorno R son hechos a trav´es del CRAN (comprehensive R archive network = amplia red de archivos R) dos veces por a˜no. (http://www.r-project.org/) • El software se distribuye bajo una licencia de “software libre”, lo que hace posible que cualquier persona lo descargue y utilice. • Hay m´as de 3500 extensiones de paquetes que han sido contribuidos al CRAN.
  4. 4. Conceptos b´asicos de R • R es un lenguaje de computadora que es procesado por un programa especial llamado int´erpretre. Este programa lee y eval´ua la expresiones del lenguaje R, e imprime los valores determinados por las expresiones. • El int´erprete indica que est´a a la espera de una entrada para imprimir su prompt (“ > ”) en la siguiente l´ınea con un resultado. • RStudio, es una interfase para R, permite ver los paquetes instalados y los script. (http://www.rstudio.com/). • R se puede instalar en Linux, Windows y (Mac)OS X.
  5. 5. Comandos importantes getwd() setwd("direcci´on.extension")
  6. 6. Usando R como calculadora • Los usuarios escriben expresiones al interprete de R. • R responde mediante el c´alculo e impresi´on de las respuestas. > 23+99 [1] 122 > 3/7 [1] 0.4285714 > 12^ 3 [1] 1728
  7. 7. Agrupar y Evaluar • Se aplican las reglas aritm´eticas normales, multiplicaci´on y divisi´on se ejecuta antes que la adici´on y la resta. > 4+3*5 [1] 19 • Las normas de evaluaci´on por defecto pueden ser invalidados por el uso de par´entesis. > (4+3)*5 [1] 35
  8. 8. Agrupar y Evaluar • Se aplican las reglas aritm´eticas normales, multiplicaci´on y divisi´on se ejecuta antes que la adici´on y la resta. > 4+3*5 [1] 19 • Las normas de evaluaci´on por defecto pueden ser invalidados por el uso de par´entesis. > (4+3)*5 [1] 35 Operador sucesi´on > 1:4*3 [1] ?
  9. 9. Prioridad del operador • Los operadores b´asicos de R tienen las siguientes prioridades (listados en orden de mayor a menor importancia). ^ potencia - + resta y suma unaria : operador sucesi´on %/% %% parte entera y resto de la divisi´on * / multiplicaci´on y divisi´on • Las operaciones con mayor prioridad se realizan antes aquellos con menor prioridad
  10. 10. Prioridad del operador • Los operadores b´asicos de R tienen las siguientes prioridades (listados en orden de mayor a menor importancia). ^ potencia - + resta y suma unaria : operador sucesi´on %/% %% parte entera y resto de la divisi´on * / multiplicaci´on y divisi´on • Las operaciones con mayor prioridad se realizan antes aquellos con menor prioridad Ejemplos: 15%/%3 y 15%%3
  11. 11. Orden de evaluaci´on • Evaluaci´on de las operaciones de la misma prioridad se llevan a cabo de izquierda a derecha (con excepci´on de la exponenciaci´on, que toma lugar de derecha a izquierda). > 2^3^2 [1] 512 > (2^3)^2 [1] 64 > 2^(3^2) [1] 512
  12. 12. Funciones de R > sqrt(2) [1] 1.414214 > log(10) [1] 2.302585 > log10(10) [1] 1 > sin(1) [1] 0.841471 > 4 * atan(1) [1] 3.141593 > sin(pi/2) [1] 1
  13. 13. Funciones de R > sqrt(2) [1] 1.414214 > log(10) [1] 2.302585 > log10(10) [1] 1 > sin(1) [1] 0.841471 > 4 * atan(1) [1] 3.141593 > sin(pi/2) [1] 1 El comando help, para obtener documentaci´on sobre alg´un comando. > help("sin")
  14. 14. Asignaciones • Los valores son almacenados asignando estos a un nombre. • Resultando un par nombre-valuado que es llamado variable. • Las declaraciones > val = 20 > val <- 20 > 20 -> val todos almacenan el valor 20 bajo el nombre val • La declaraci´on “ = ” es preferida a “ <- ”
  15. 15. Usando variables • Las variables pueden ser usadas en expresiones de la misma forma que los n´umeros.
  16. 16. Usando variables • Las variables pueden ser usadas en expresiones de la misma forma que los n´umeros. • Por ejemplo > val = 20 > val = val + 30 > val [1] 50
  17. 17. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val
  18. 18. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val La funci´on scan(): > val = scan() luego dar enter e insertar los n´umeros.
  19. 19. Vectores num´ericos R tiene la capacidad de trabajar con vectores de valores. Valores individuales pueden ser combinados en un vector por medio de la funci´on c. > val = c(5,6, 3, 4) > val La funci´on scan(): > val = scan() luego dar enter e insertar los n´umeros. Los elementos de un vector tienen que ser del mismo tipo (num´erico)
  20. 20. Sucesiones Una manera simple de generar vectores es usando el operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de enteros desde “ a ” hasta “ b ”. > 1:33 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Ejemplos: > -10:10 ; > 10:-15
  21. 21. Sucesiones Una manera simple de generar vectores es usando el operador “ : ”. La expresi´on “ a:b ”, genera la sucesi´on de enteros desde “ a ” hasta “ b ”. > 1:33 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Ejemplos: > -10:10 ; > 10:-15 La funci´on “ seq(from=1,to=1,by= ,length.out= ) ”, > seq(18) > seq(5,-5) > seq(0,5,0.5) [1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 > seq(0,1,length.out=6) [1] 0.0 0.2 0.4 0.6 0.8 1.0
  22. 22. Combinando vectores La funci´on “ c ” puede ser usada para combinar vectores y escalares dentro de un vector > x = c(1, 2, 3, 4) > c(x, 10) [1] 1 2 3 4 10 > c(x, x) [1] 1 2 3 4 1 2 3 4 R almacena los valores escalares, como el 10 como, un vector de longitud uno, de modo que los argumentos en la expresi´on anterior son vectores.
  23. 23. Combinando vectores La funci´on “ c ” puede ser usada para combinar vectores y escalares dentro de un vector > x = c(1, 2, 3, 4) > c(x, 10) [1] 1 2 3 4 10 > c(x, x) [1] 1 2 3 4 1 2 3 4 R almacena los valores escalares, como el 10 como, un vector de longitud uno, de modo que los argumentos en la expresi´on anterior son vectores. La funci´on “ length ”, da como resultado la longitud de un vector en su argumento > length(x) [1] 4
  24. 24. Aritm´etica de vectores Porque “todo es un vector” es natural esperar que la variable definida “ x ” anteriormente se pueda operar como un vector en general: > 2 * x + 1 [1] 3 5 7 9
  25. 25. Aritm´etica de vectores Porque “todo es un vector” es natural esperar que la variable definida “ x ” anteriormente se pueda operar como un vector en general: > 2 * x + 1 [1] 3 5 7 9 tambi´en es natural esperar esto > sqrt(x) [1] 1.000000 1.414214 1.732051 2.000000 > x^2 [1] 1 4 9 16 > x*x [1] 1 4 9 16 > x**x [1] 1 4 27 256
  26. 26. Regla del reciclaje(rehusar) Lo que es menos obvio acerca de la aritm´etica de vectores es lo que sucede cuando dos vectores de diferente longitud se combinan. > c(1, 2, 3, 4) + c(1, 2) [1] 2 4 4 6 Este resultado es explicado por la regla de reciclaje usada por R para definir este tipo de c´alculo. Primero estira el vector m´as corto para reciclar sus elementos, luego combina los vectores elemento por elemento.
  27. 27. Regla del reciclaje(rehusar) Lo que es menos obvio acerca de la aritm´etica de vectores es lo que sucede cuando dos vectores de diferente longitud se combinan. > c(1, 2, 3, 4) + c(1, 2) [1] 2 4 4 6 Este resultado es explicado por la regla de reciclaje usada por R para definir este tipo de c´alculo. Primero estira el vector m´as corto para reciclar sus elementos, luego combina los vectores elemento por elemento. Ejemplos: > c(1,2)+c(1,2,3,4)+c(1,2,3,4,5,6) > c(1,2)+c(1,2,3,4)+c(1,2,3,4,5,6,7,8)
  28. 28. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3
  29. 29. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3 Tambi´en es posible extraer subvectores mediante la especificaci´on vectores de sub´ındices. > x[c(1, 3)] [1] 1 3
  30. 30. Elementos y subconjuntos Elementos individules pueden ser extraidos desde de los vectores especificando sus indices. El tercer elemento de puede ser extraido desde “ x ” comom sigue. > x[3] [1] 3 Tambi´en es posible extraer subvectores mediante la especificaci´on vectores de sub´ındices. > x[c(1, 3)] [1] 1 3 El operador de sucesi´on proporciona una manera ´util de extraer elementos de un vector > x[1:3] [1] 1 2 3
  31. 31. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ”
  32. 32. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)]
  33. 33. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”:
  34. 34. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)]
  35. 35. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)] • insertar en la posici´on 5 del vector “ x ” el n´umero 20:
  36. 36. Elementos y subconjuntos Tambi´en es posible usar la funci´on “ seq ”, usar esta en lo siguiente Ejercicios: Dado el vector, > x=1:10 • extraer la primera, la quinta, novena y d´ecima componente del vector “ x ” > x[c(1,5,9,10)] • extraer las s´olo las componentes pares de “ x ”: > x[seq(2,10,by=2)] • insertar en la posici´on 5 del vector “ x ” el n´umero 20: > x = c(x[1:4],20,x[5:10])
  37. 37. Sub´ındice negativo A veces, en vez de la extracci´on de los elementos de un vector correspondiente a un determinado conjunto de sub´ındices, es posible que desee extraer los elementos que no se corresponden a un conjunto dado de sub´ındices. Esto se puede hacer mediante el uso de un conjunto de negativo de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es, extraer todos los elementos de “ x ” excepto el primero y el tercero. > x=1:5 > x [1] 1 2 3 4 5 > x[c(-1,-3)] [1] 2 4 5
  38. 38. Sub´ındice negativo A veces, en vez de la extracci´on de los elementos de un vector correspondiente a un determinado conjunto de sub´ındices, es posible que desee extraer los elementos que no se corresponden a un conjunto dado de sub´ındices. Esto se puede hacer mediante el uso de un conjunto de negativo de sub´ındices. Por ejemplo “ x[c(-1,-3)] ”, esto es, extraer todos los elementos de “ x ” excepto el primero y el tercero. > x=1:5 > x [1] 1 2 3 4 5 > x[c(-1,-3)] [1] 2 4 5 No es posible mezclar sub´ındices positivos con negativos.
  39. 39. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a la derecha. > y = 1:10 > y[4:6] = 0 > y [1] 1 2 3 0 0 0 7 8 9 10
  40. 40. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a la derecha. > y = 1:10 > y[4:6] = 0 > y [1] 1 2 3 0 0 0 7 8 9 10 Ejemplo: > y[4:6] = c(6,5,4)
  41. 41. Cambiando subconjunto de vectores Adem´as de la extracci´on de los valores en las posiciones particulares en un vector, es posible cambiar sus valores. Esto se hace poniendo el subconjunto a ser modificado en el lado izquierdo de la asignaci´on con el valor(s) de reposici´on a la derecha. > y = 1:10 > y[4:6] = 0 > y [1] 1 2 3 0 0 0 7 8 9 10 Ejemplo: > y[4:6] = c(6,5,4) El vector que se incerta debe tener la misma longitud que el vector entrante.
  42. 42. Valores num´ericos especiales - Infinito Cuando uno es dividido por cero, el resultado es infinito. Este tipo de resultado especial es tambi´en dado por R. > 1 / 0 [1] Inf Aqu´ı, Inf representa infinito positivo. Existe tambi´en el infinito negativo > -1 / 0 [1] -Inf
  43. 43. Valores num´ericos especiales - Infinito Infinito tiene todas las propiedades que se puede esperar. Por ejemplo > 1 + Inf [1] Inf y tambi´en > 1000 / Inf [1] 0
  44. 44. Valores num´ericos especiales - Not a Number Not a Number = No es un n´umero. R tambi´en tiene un valor especial, llamado NaN, que indica que el resultado num´erico es indefinido. > 0 / 0 [1] NaN y restando infinito de infinito. > Inf - Inf [1] NaN Algunas funciones matem´aticas tambi´en producir´an resultados NaN > sqrt(-1) [1] NaN Mensajes de aviso perdidos In sqrt(-1) : Se han producido NaNs
  45. 45. Valores num´ericos especiales - Not avaliable Not avalaible = No disponible R tiene un valor particular que es usado para indicar que un valor es perdido o no disponible. El valor es indicado por NA. Cualquier expresi´on aritm´etica que contenga NA producir´a NA como un resultado. > 1 + sin(NA) [1] NA El valor NA es usado usualmente para las observaciones estad´ısticas donde el valor no pudo ser registrado. Como cuando un encuestador visita una casa y no hay nadie.
  46. 46. Resumen de funciones - min, max y range Las funciones min y max retorna el m´ınimo y el m´aximo de los valores contenidos en cualquiera de sus argumentos, y la funci´on range retorna un vector de longitud 2 conteniendo el m´ınimo y el m´aximo de los valores del argumento. > max(1:100) [1] 100 > max(1:100, Inf) [1] Inf > range(1:100) [1] 1 100
  47. 47. Resumen de funciones - sum, prod y diff Las funciones sum y prod calculan la suma y el producto de todos los elementos en sus argumentos. > sum(1:100) [1] 5050 > prod(1:10) [1] 3628800 La funci´on diff, diferencia cada una de las componentes del vector con la anterior de manera sucesiva. > x=c(1,2,5,10) > diff(x) [1] 1 3 5
  48. 48. Resumen de funciones y NA En cualquier de las funciones presentadas la presencia de NA y NaN en cualquiera de los argumentos producir´a un resultado que es NA y NaN. > min(NA, 100) [1] NA Estos NA y NaN valores pueden ser excluidos especificando un argumento adicional na.rm=TRUE o na.rm=T. > min(10, 20, NA, na.rm = TRUE) [1] 10 > min(1,2,NaN,na.rm=TRUE) [1] 1
  49. 49. Acumulados > cumsum(1:10) [1] 1 3 6 10 15 21 28 36 45 55 > cumprod(1:6) [1] 1 2 6 24 120 720 > cummax(1:10) [1] 1 2 3 4 5 6 7 8 9 10 > cummin(1:10) [1] 1 1 1 1 1 1 1 1 1 1 Las funciones acumulativas no tienen el argumento na.rm.
  50. 50. Funciones paralelas Finalmente, hay versiones paralelas de las funciones m´aximo y m´ınimo. Estas toman un n´umero de vectores como argumentos y aplica la regla de reciclaje para estos, y luego calcula (max o min) a trav´es de las correspondientes componentes de los argumentos. > pmin(c(2,3),c(4,5),c(5,6)) [1] 2 3 > pmax(c(2,3),c(5,4,-2,-3)) [1] 5 4 2 3 > pmax(0, c(-1, 0, 1)) [1] 0 0 1 Las versiones paralelas de las funciones m´ınimo y m´aximo aceptan el argumento na.rm
  51. 51. Vectores l´ogicos Los vectores l´ogicos contiene los valores TRUE y FALSE. > b = c(TRUE, TRUE, FALSE, FALSE) Tambi´en se puede usar T=TRUE y F=FALSE, reescribiendo > b = c(T,T,F,F) La extracci´on y modificaci´on de vectores l´ogicos se lleva a cabo exactamente de la misma manera que como se hace con los vectores num´ericos > b[1:3] [1] TRUE TRUE FALSE > b[1] = F > b [1] FALSE TRUE FALSE FALSE
  52. 52. Generando valores l´ogicos Los valores l´ogicos se producen a menudo como resultado de afirmaciones hechas sobre otros tipos de valores. > 3 < 4 [1] TRUE > 3 > 4 [1] FALSE Los operadores de comparaci´on tambi´en se pueden aplicar a los vectores de valores. > c(1, 2, 3, 4) < 3 [1] TRUE TRUE FALSE FALSE
  53. 53. Operadores de comparaci´on El conjunto completo de operadores l´ogicos se muestra a continuaci´on. Todos los operadores retornan valores l´ogicos. < menor que <= menor o igual == igual != no es igual > mayor que >= mayor o igual
  54. 54. Las conjunciones l´ogicas Los valores l´ogicos se pueden combinar con los operadores booleanos, “ & ” que denota la l´ogica “ y ”, “ | ” el cual denota la l´ogica “ o ” y “ ! ” que denota negaci´on. > x = c(1, 2, 3, 4) > x > 2 [1] FALSE FALSE TRUE TRUE > x < 2 | x > 3 [1] TRUE FALSE FALSE TRUE Las funciones any y all pueden ser usadas para verificar si alguno o todos los elementos de un vector l´ogico son verdaderos. > all(x > 0) [1] TRUE > any(x > 2) [1] TRUE
  55. 55. Negaci´on El operador ! es usado para indicar la negaci´on l´ogica. Este cambia TRUE en FALSE y viceversa. > !(3 < 4) [1] FALSE > TRUE & ! FALSE [1] TRUE > b = c(T,F,T,T) > !b [1] FALSE TRUE FALSE FALSE
  56. 56. L´ogica y valores NA Los vectores l´ogico pueden contener valores NA. Esto produce una l´ogica de tres valores. x & y y TRUE FALSE NA TRUE TRUE FALSE NA x FALSE FALSE FALSE FALSE NA NA FALSE NA x | y y TRUE FALSE NA TRUE TRUE TRUE TRUE x FALSE TRUE FALSE NA NA TRUE NA NA
  57. 57. Subdivisi´on l´ogica Es posible extraer subconjuntos de vectores mediante el uso de valores l´ogicos. Como ejemplo, consideremos la expresi´on de subdivisi´on x[x>2]. La expresi´on x>2 define un vector l´ogico con la misma longitud que x, y el subconjunto contiene aquellos valores de x que corresponden a los valores de TRUE en este vector. > x = c(1, 2, 3, 4) > x[x > 2] [1] 3 4
  58. 58. Selecci´on condicional La funci´on ifelse (ifelse(test, yes, no)), la funci´on hace posible elegir entre los elementos de dos vectores en base a los valores de un vector l´ogico. > ifelse(c(T,T,F,F),c(2,1,5),c(5,6,3,7,8,9)) [1] 2 1 3 7 > x = 1:10 > ifelse(x > 5, x, -x) [1] -1 -2 -3 -4 -5 6 7 8 9 10 Los valores que se est´an seleccionados son reciclados si es necesario. > x = 1:10 > ifelse(x > 5, x, 0) [1] 0 0 0 0 0 6 7 8 9 10
  59. 59. Vector de caracteres Vectores de caracteres tienen elementos que son cadenas de caracteres. Cadenas de carateres son caracteres encerrados entre comillas, "como esto", o comas, 'como esto'. Vectores de caracteres pueden ser creados con la funci´on c > s = c("primero", "segundo", "tercero") y manipulado exactamente de la misma manera que otros vectores > s[1:2] [1] "primero" "segundo" > s[1] = "initial" > s [1] "inicial" "segundo" "tercero"
  60. 60. Manipulaci´on de cadenas La funci´on nchar retorna la longitud de las cadenas de caracteres en un vector de caracteres > s [1] "inicial" "segundo" "tercero" > nchar(s) [1] 7 7 7 Subcadenas pueden ser extraidas con substring (substring(cadena(s),inicio(s),final(es)). > substring("abcdef", 2, c(4,5)) [1] "bcd" "bcde" > substring(s, 1, 2:3) [1] "in" "seg" "te" (Note el uso de reciclaje en este ´ultimo.)
  61. 61. Pegando cadenas Las cadenas pueden ser “ pegadas ” con paste. > paste("primero","segundo","tercero") [1] "primero segundo tercero" Por defecto, las cadenas son unidos por un espacio entre ellos, pero es posible usar cualquier sucesi´on de caracteres como un separador. > paste("primero","segundo","tercero",sep=":") [1] "primero:segundo:tercero" Usando una cadena separadora vac´ıa concatenar´a las cadenas. > paste("primero","segundo","tercero",sep="") [1] "primerosegundotercero"
  62. 62. Pegando vectores paste trabajar´a con vectores, as´ı como cadenas simples. El resultado es definido por la regla de reciclaje. > paste(s,"elemento",sep="-") [1] "inicial-elemento" "segundo-elemento" [3] "tercero-elemento" Un argumento adicional, collapse, dar´a como resultado la uni´on de las cadenas de caracteres separados por el separador especificado. > paste(s, collapse = " -> ") [1] "inicial -> segundo -> tercero"
  63. 63. Vectores complejo-valuados Los vectores pueden contener valores como n´umeros complejos. Estos son escritos en la notaci´on estandar. > > z = 10+20i > z [1] 10+20i > z=c(2,3,1+1i) > z [1] 2+0i 3+0i 1+1i La aritm´etica aplicada sobre los valores complejos obedece las reglas de la aritm´etica de los complejos. > z = -1+0i > sqrt(z) [1] 0+1i
  64. 64. Modalidad y longitud de un vector Los vectores tienen asociada una modalidad(mode) (una de "logical", "numeric", "complex" o "character") y longitud(length). > mode(1:10) [1] "numeric" > length(1:100) [1] 100 Cada una de las cuatro modalidades de un vector tiene sus correspondientes funciones (logic, nmeric, comlex y character) que pueden ser usadas para crear vectores con esas modalidades > logical(5) [1] FALSE FALSE FALSE FALSE FALSE > numeric(5) [1] 0 0 0 0 0
  65. 65. Creando vectores Una funci´on llamada vector puede tambi´en ser usada para crear vectores de cualquiera de los 4 tipos b´asicos. > vector("numeric", 5) [1] 0 0 0 0 0 > vector("logical", 5) [1] FALSE FALSE FALSE FALSE FALSE Es posible crear vectores con una longitud cero usando cualquiera de las funciones enumeradas anteriormente. > numeric(0) numeric(0) Ninguna informaci´on de indexaci´on es impresa para los vectores de longitud cero (porque no existen elementos a indexar).
  66. 66. Coerci´on de tipos Los tipos son autom´aticamente convertidos o coercidos(coaccionados) en R si la necesidad surge. > c(TRUE, 17) [1] 1 17 > c(TRUE, 17, "doce") [1] "TRUE" "17" "doce" Hay un ordenamiento natural de las modalidades de vectores en R. Valores l´ogicos pueden ser interpretados como num´ericos si se toma el valor de FALSE ser´a 0 y el valor de TRUE como 1, valores num´ericos pueden ser interpretados como complejos tomando la parte imaginaria como cero y todos los modos pueden ser interpretados como caracteres s´olo tomando sus representaciones impresas. > c(T,1+3i)
  67. 67. Idiomas de la coerci´on de tipos La coerci´on est´a en el coraz´on de varios idiomas en R. Un ejemplo com´un es contar el n´umero de elementos de un vector para la cual una condici´on es verdad. Por ejemplo, la expresi´on sum(x>5) cuenta el n´umero de elementos en x que mayores que 5. > x = 1:10 > x > 5 [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE [9] TRUE TRUE > sum(x > 5) [1] 5 > cumsum(x > 5) [1] 0 0 0 0 0 1 2 3 4 5
  68. 68. Coerci´on expl´ıcita R forzar´a autom´aticamente coerciona vectores utilizando el orden natural de modo vector. Otras ocaciones deben llevarse acabo utilizando coerci´on expl´ıcita con las funciones as.logical, as.numeric, as.complex y as.character. > "2" + "3" Error en "2" + "3" : argumento no-num´erico para operador binario > as.numeric("2") + as.numeric("3") [1] 5
  69. 69. Vectores nombrados Vectores de cualquiera de los tipos b´asicos pueden ser aumentados para proporcionar nombres a sus elementos. > v=1:4 > names(v)=c("a","b","c","d") > v a b c d 1 2 3 4 Los nombres etiquetados al vector pueden ser extraidos usando la funci´on names. > names(v) [1] "a" "b" "c" "d"
  70. 70. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos y subvectores. Si v se define por las declaraciones > v = c(1, 2, 3, 4) > names(v) = c("a", "b", "c", "d") entonces podemos extraer subconjuntos de elementos como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4
  71. 71. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos y subvectores. Si v se define por las declaraciones > v = c(1, 2, 3, 4) > names(v) = c("a", "b", "c", "d") entonces podemos extraer subconjuntos de elementos como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4 Ejercicio: Cambiar la etiqueta "b" por "m"
  72. 72. Subconfiguraci´on usando nombres los nombres pueden tambi´en ser usados para extraer elementos y subvectores. Si v se define por las declaraciones > v = c(1, 2, 3, 4) > names(v) = c("a", "b", "c", "d") entonces podemos extraer subconjuntos de elementos como sigue > v["a"] a 1 > v[c("a", "d")] a d 1 4 Ejercicio: Cambiar la etiqueta "b" por "m" > names(v)[2]="m"
  73. 73. Listas con nombres Los elementos de una lista pueden ser nombrados. Esto se puede hacer con la funci´on names o directamente en la llamada a list. Cuando los elementos son nombrados, el nombre aparece en lugar de la informaci´on de indexaci´on > v=list(a=10, b="once", T) > v $a [1] 10 $b [1] "once" [[3]] [1] TRUE
  74. 74. Elementos y subconjuntos de listas Cuando preguntamos por un elemento de una lista, usar [[ ]]. Cuando preguntamos por un subconjunto, usar [ ] > lst = list(10, "once", T) > lst[[1]] [1] 10 > lst[1] [[1]] [1] 10 El primer resultado aqu´ı es el elemento 10 se extrae de la lista. El segundo es una lista conteniendo ese elemento.
  75. 75. Extracci´on de elementos con nombre Elementos con nombre pueden ser extraidos de una lista de la misma manera que los elementos con nombre son extraidos desde vectores. > lst = list(a=10, b="once", T) > lst[["a"]] [1] 10 Esta es una operaci´on com´un, existe una abreviatura para esto. > lst$a [1] 10
  76. 76. El objeto NULL Existe un objeto especial en R llamado el objeto NULL que es usado para representar “ nada ”. El objeto NULL tiene una longitud de cero y puede ser libremente coaccionado ya sea aun vector o lista de longitud cero. > length(NULL) [1] 0 > as.numeric(NULL) numeric(0) > as.list(NULL) list()

×