conceptos básicos de r

Post on 07-Jul-2015

309 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Se muestra loa conceptos básicos de R

TRANSCRIPT

Conceptos Basicos de

R

Linkedin: Alvaro Miguel Naupay Gusukumak z anaupay@hotmail.com

blog: http://mat-alvaro.blogspot.com/

August 15, 2013

El lenguaje R

• Fue inspirado en S, creado en Laboratorios Bell por JohnChambers y sus colaboradores Rick Becker, Allan Wilksy Duncan Temple Lang entre los anos 1975 y 1998.

• R es un lenguaje de computacion (y asociado a unentorno computacional) para llevar acabo calculosestadısticos.

• Parece muy similar a S, pero la similitud fuereestructurada encima de piezas de software muydiferentes.

• R fue creado por Robert Gentleman y Ross Ihaka enla Universidad de Aukland como banco de prueba paraprobar algunas ideas estadısticas.

• Ahora se ha convertido en una herramienta con todas lasfunciones para llevar a cabo calculos estadısticos y otrascosas mas.

El proyecto R (The R project)

• El Proyecto R es una colaboracion internacional deinvestigadores de estadıstica computacional.

• Hay aproximadamente 20 miembros en el equipoprincipal de R, que mantienen y mejoran a R.

• Las ediciones del entorno R son hechos a traves delCRAN (comprehensive R archive network = amplia redde archivos R) dos veces por ano.(http://www.r-project.org/)

• El software se distribuye bajo una licencia de “softwarelibre”, lo que hace posible que cualquier persona lodescargue y utilice.

• Hay mas de 3500 extensiones de paquetes que han sidocontribuidos al CRAN.

Conceptos basicos de R

• R es un lenguaje de computadora que es procesado porun programa especial llamado interpretre. Este programalee y evalua la expresiones del lenguaje R, e imprime losvalores determinados por las expresiones.

• El interprete indica que esta a la espera de una entradapara imprimir su prompt (“ > ”) en la siguiente lınea conun resultado.

• RStudio, es una interfase para R, permite ver lospaquetes instalados y los script.(http://www.rstudio.com/).

• R se puede instalar en Linux, Windows y (Mac)OS X.

Comandos importantes

getwd()

setwd("direccion.extension")

Usando R como calculadora

• Los usuarios escriben expresiones al interprete de R.

• R responde mediante el calculo e impresion de lasrespuestas.> 23+99

[1] 122

> 3/7

[1] 0.4285714

> 12^ 3

[1] 1728

Agrupar y Evaluar

• Se aplican las reglas aritmeticas normales, multiplicaciony division se ejecuta antes que la adicion y la resta.> 4+3*5

[1] 19

• Las normas de evaluacion por defecto pueden serinvalidados por el uso de parentesis.> (4+3)*5

[1] 35

Agrupar y Evaluar

• Se aplican las reglas aritmeticas normales, multiplicaciony division se ejecuta antes que la adicion y la resta.> 4+3*5

[1] 19

• Las normas de evaluacion por defecto pueden serinvalidados por el uso de parentesis.> (4+3)*5

[1] 35

Operador sucesion> 1:4*3

[1] ?

Prioridad del operador

• Los operadores basicos de R tienen las siguientesprioridades (listados en orden de mayor a menorimportancia).

^ potencia- + resta y suma unaria: operador sucesion%/% %% parte entera y resto de la division* / multiplicacion y division

• Las operaciones con mayor prioridad se realizan antesaquellos con menor prioridad

Prioridad del operador

• Los operadores basicos de R tienen las siguientesprioridades (listados en orden de mayor a menorimportancia).

^ potencia- + resta y suma unaria: operador sucesion%/% %% parte entera y resto de la division* / multiplicacion y division

• Las operaciones con mayor prioridad se realizan antesaquellos con menor prioridad

Ejemplos: 15%/%3 y 15%%3

Orden de evaluacion

• Evaluacion de las operaciones de la misma prioridad sellevan a cabo de izquierda a derecha (con excepcion de laexponenciacion, que toma lugar de derecha a izquierda).> 2^3^2

[1] 512

> (2^3)^2

[1] 64

> 2^(3^2)

[1] 512

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

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 documentacion sobre alguncomando.> help("sin")

Asignaciones

• Los valores son almacenados asignando estos a unnombre.

• Resultando un par nombre-valuado que es llamadovariable.

• Las declaraciones> val = 20

> val <- 20

> 20 -> val

todos almacenan el valor 20 bajo el nombre val

• La declaracion “ = ” es preferida a “ <- ”

Usando variables

• Las variables pueden ser usadas en expresiones de lamisma forma que los numeros.

Usando variables

• Las variables pueden ser usadas en expresiones de lamisma forma que los numeros.

• Por ejemplo> val = 20

> val = val + 30

> val

[1] 50

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

La funcion scan():

> val = scan()

luego dar enter e insertar los numeros.

Vectores numericos

R tiene la capacidad de trabajar con vectores de valores.Valores individuales pueden ser combinados en un vectorpor medio de la funcion c.

> val = c(5,6, 3, 4)

> val

La funcion scan():

> val = scan()

luego dar enter e insertar los numeros.Los elementos de un vector tienen que ser del mismo tipo(numerico)

Sucesiones

Una manera simple de generar vectores es usando eloperador “ : ”. La expresion “ a:b ”, genera la sucesion deenteros 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

Sucesiones

Una manera simple de generar vectores es usando eloperador “ : ”. La expresion “ a:b ”, genera la sucesion deenteros 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 funcion “ 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

Combinando vectores

La funcion “ c ” puede ser usada para combinar vectores yescalares 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, unvector de longitud uno, de modo que los argumentos en laexpresion anterior son vectores.

Combinando vectores

La funcion “ c ” puede ser usada para combinar vectores yescalares 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, unvector de longitud uno, de modo que los argumentos en laexpresion anterior son vectores.La funcion “ length ”, da como resultado la longitud de unvector en su argumento> length(x)

[1] 4

Aritmetica de vectores

Porque “todo es un vector” es natural esperar que lavariable definida “ x ” anteriormente se pueda operar comoun vector en general:> 2 * x + 1

[1] 3 5 7 9

Aritmetica de vectores

Porque “todo es un vector” es natural esperar que lavariable definida “ x ” anteriormente se pueda operar comoun vector en general:> 2 * x + 1

[1] 3 5 7 9

tambien 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

Regla del reciclaje(rehusar)

Lo que es menos obvio acerca de la aritmetica de vectoreses lo que sucede cuando dos vectores de diferente longitudse combinan.> c(1, 2, 3, 4) + c(1, 2)

[1] 2 4 4 6

Este resultado es explicado por la regla de reciclaje usadapor R para definir este tipo de calculo.

Primero estira el vector mas corto para reciclar sus

elementos, luego combina los vectores elemento por

elemento.

Regla del reciclaje(rehusar)

Lo que es menos obvio acerca de la aritmetica de vectoreses lo que sucede cuando dos vectores de diferente longitudse combinan.> c(1, 2, 3, 4) + c(1, 2)

[1] 2 4 4 6

Este resultado es explicado por la regla de reciclaje usadapor R para definir este tipo de calculo.

Primero estira el vector mas 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)

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Tambien es posible extraer subvectores mediante laespecificacion vectores de subındices.> x[c(1, 3)]

[1] 1 3

Elementos y subconjuntos

Elementos individules pueden ser extraidos desde de losvectores especificando sus indices. El tercer elemento depuede ser extraido desde “ x ” comom sigue.> x[3]

[1] 3

Tambien es posible extraer subvectores mediante laespecificacion vectores de subındices.> x[c(1, 3)]

[1] 1 3

El operador de sucesion proporciona una manera util deextraer elementos de un vector> x[1:3]

[1] 1 2 3

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

• insertar en la posicion 5 del vector “ x ” el numero 20:

Elementos y subconjuntos

Tambien es posible usar la funcion “ seq ”, usar esta en losiguienteEjercicios: Dado el vector,> x=1:10

• extraer la primera, la quinta, novena y decimacomponente del vector “ x ”

> x[c(1,5,9,10)]

• extraer las solo las componentes pares de “ x ”:

> x[seq(2,10,by=2)]

• insertar en la posicion 5 del vector “ x ” el numero 20:

> x = c(x[1:4],20,x[5:10])

Subındice negativo

A veces, en vez de la extraccion de los elementos de unvector correspondiente a un determinado conjunto desubındices, es posible que desee extraer los elementos queno se corresponden a un conjunto dado de subındices. Estose puede hacer mediante el uso de un conjunto de negativode subındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,extraer todos los elementos de “ x ” excepto el primero y eltercero.> x=1:5

> x

[1] 1 2 3 4 5

> x[c(-1,-3)]

[1] 2 4 5

Subındice negativo

A veces, en vez de la extraccion de los elementos de unvector correspondiente a un determinado conjunto desubındices, es posible que desee extraer los elementos queno se corresponden a un conjunto dado de subındices. Estose puede hacer mediante el uso de un conjunto de negativode subındices. Por ejemplo “ x[c(-1,-3)] ”, esto es,extraer todos los elementos de “ x ” excepto el primero y eltercero.> 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.

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona la derecha.> y = 1:10

> y[4:6] = 0

> y

[1] 1 2 3 0 0 0 7 8 9 10

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona 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)

Cambiando subconjunto de vectores

Ademas de la extraccion de los valores en las posicionesparticulares en un vector, es posible cambiar sus valores.Esto se hace poniendo el subconjunto a ser modificado en ellado izquierdo de la asignacion con el valor(s) de reposiciona 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 queel vector entrante.

Valores numericos especiales - Infinito

Cuando uno es dividido por cero, el resultado es infinito.Este tipo de resultado especial es tambien dado por R.> 1 / 0

[1] Inf

Aquı, Inf representa infinito positivo. Existe tambien elinfinito negativo> -1 / 0

[1] -Inf

Valores numericos especiales - Infinito

Infinito tiene todas las propiedades que se puede esperar.Por ejemplo> 1 + Inf

[1] Inf

y tambien> 1000 / Inf

[1] 0

Valores numericos especiales - Not a Number

Not a Number = No es un numero.R tambien tiene un valor especial, llamado NaN, que indicaque el resultado numerico es indefinido.> 0 / 0

[1] NaN

y restando infinito de infinito.> Inf - Inf

[1] NaN

Algunas funciones matematicas tambien produciranresultados NaN> sqrt(-1)

[1] NaN

Mensajes de aviso perdidos

In sqrt(-1) : Se han producido NaNs

Valores numericos especiales - Not avaliable

Not avalaible = No disponibleR tiene un valor particular que es usado para indicar queun valor es perdido o no disponible. El valor es indicadopor NA. Cualquier expresion aritmetica que contenga NA

producira NA como un resultado.> 1 + sin(NA)

[1] NA

El valor NA es usado usualmente para las observacionesestadısticas donde el valor no pudo ser registrado. Comocuando un encuestador visita una casa y no hay nadie.

Resumen de funciones - min, max y range

Las funciones min y max retorna el mınimo y el maximo delos valores contenidos en cualquiera de sus argumentos, y lafuncion range retorna un vector de longitud 2 conteniendoel mınimo y el maximo de los valores del argumento.> max(1:100)

[1] 100

> max(1:100, Inf)

[1] Inf

> range(1:100)

[1] 1 100

Resumen de funciones - sum, prod y diff

Las funciones sum y prod calculan la suma y el producto detodos los elementos en sus argumentos.> sum(1:100)

[1] 5050

> prod(1:10)

[1] 3628800

La funcion diff, diferencia cada una de las componentesdel vector con la anterior de manera sucesiva.> x=c(1,2,5,10)

> diff(x)

[1] 1 3 5

Resumen de funciones y NA

En cualquier de las funciones presentadas la presencia deNA y NaN en cualquiera de los argumentos producira unresultado que es NA y NaN.> min(NA, 100)

[1] NA

Estos NA y NaN valores pueden ser excluidos especificandoun 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

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.

Funciones paralelas

Finalmente, hay versiones paralelas de las funcionesmaximo y mınimo. Estas toman un numero de vectorescomo argumentos y aplica la regla de reciclaje para estos, yluego calcula (max o min) a traves de las correspondientescomponentes 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 maximoaceptan el argumento na.rm

Vectores logicos

Los vectores logicos contiene los valores TRUE y FALSE.> b = c(TRUE, TRUE, FALSE, FALSE)

Tambien se puede usar T=TRUE y F=FALSE, reescribiendo> b = c(T,T,F,F)

La extraccion y modificacion de vectores logicos se lleva acabo exactamente de la misma manera que como se hacecon los vectores numericos> b[1:3]

[1] TRUE TRUE FALSE

> b[1] = F

> b

[1] FALSE TRUE FALSE FALSE

Generando valores logicos

Los valores logicos se producen a menudo como resultadode afirmaciones hechas sobre otros tipos de valores.> 3 < 4

[1] TRUE

> 3 > 4

[1] FALSE

Los operadores de comparacion tambien se pueden aplicara los vectores de valores.> c(1, 2, 3, 4) < 3

[1] TRUE TRUE FALSE FALSE

Operadores de comparacion

El conjunto completo de operadores logicos se muestra acontinuacion. Todos los operadores retornan valores logicos.

< menor que<= menor o igual== igual!= no es igual> mayor que>= mayor o igual

Las conjunciones logicas

Los valores logicos se pueden combinar con los operadoresbooleanos, “ & ” que denota la logica “ y ”, “ | ” el cualdenota la logica “ o ” y “ ! ” que denota negacion.> 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 sialguno o todos los elementos de un vector logico sonverdaderos.> all(x > 0)

[1] TRUE

> any(x > 2)

[1] TRUE

Negacion

El operador ! es usado para indicar la negacion logica.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

Logica y valores NA

Los vectores logico pueden contener valores NA. Estoproduce una logica 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

Subdivision logica

Es posible extraer subconjuntos de vectores mediante el usode valores logicos.Como ejemplo, consideremos la expresion de subdivisionx[x>2].La expresion x>2 define un vector logico con la mismalongitud que x, y el subconjunto contiene aquellos valoresde x que corresponden a los valores de TRUE en este vector.> x = c(1, 2, 3, 4)

> x[x > 2]

[1] 3 4

Seleccion condicional

La funcion ifelse (ifelse(test, yes, no)), la funcionhace posible elegir entre los elementos de dos vectores enbase a los valores de un vector logico.> 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 estan seleccionados son reciclados si esnecesario.> x = 1:10

> ifelse(x > 5, x, 0)

[1] 0 0 0 0 0 6 7 8 9 10

Vector de caracteres

Vectores de caracteres tienen elementos que son cadenas decaracteres.Cadenas de carateres son caracteres encerrados entrecomillas, "como esto", o comas, 'como esto'.Vectores de caracteres pueden ser creados con la funcion c

> s = c("primero", "segundo", "tercero")

y manipulado exactamente de la misma manera que otrosvectores> s[1:2]

[1] "primero" "segundo"

> s[1] = "initial"

> s

[1] "inicial" "segundo" "tercero"

Manipulacion de cadenas

La funcion nchar retorna la longitud de las cadenas decaracteres 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.)

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 entreellos, pero es posible usar cualquier sucesion de caracterescomo un separador.> paste("primero","segundo","tercero",sep=":")

[1] "primero:segundo:tercero"

Usando una cadena separadora vacıa concatenara lascadenas.> paste("primero","segundo","tercero",sep="")

[1] "primerosegundotercero"

Pegando vectores

paste trabajara con vectores, ası como cadenas simples. Elresultado es definido por la regla de reciclaje.> paste(s,"elemento",sep="-")

[1] "inicial-elemento" "segundo-elemento"

[3] "tercero-elemento"

Un argumento adicional, collapse, dara como resultado launion de las cadenas de caracteres separados por elseparador especificado.> paste(s, collapse = " -> ")

[1] "inicial -> segundo -> tercero"

Vectores complejo-valuados

Los vectores pueden contener valores como numeroscomplejos. Estos son escritos en la notacion estandar.> > z = 10+20i

> z

[1] 10+20i

> z=c(2,3,1+1i)

> z

[1] 2+0i 3+0i 1+1i

La aritmetica aplicada sobre los valores complejos obedecelas reglas de la aritmetica de los complejos.> z = -1+0i

> sqrt(z)

[1] 0+1i

Modalidad y longitud de un vector

Los vectores tienen asociada una modalidad(mode) (una de"logical", "numeric", "complex" o "character") ylongitud(length).> mode(1:10)

[1] "numeric"

> length(1:100)

[1] 100

Cada una de las cuatro modalidades de un vector tiene suscorrespondientes funciones (logic, nmeric, comlex ycharacter) que pueden ser usadas para crear vectores conesas modalidades> logical(5)

[1] FALSE FALSE FALSE FALSE FALSE

> numeric(5)

[1] 0 0 0 0 0

Creando vectores

Una funcion llamada vector puede tambien ser usada paracrear vectores de cualquiera de los 4 tipos basicos.> 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 usandocualquiera de las funciones enumeradas anteriormente.> numeric(0)

numeric(0)

Ninguna informacion de indexacion es impresa para losvectores de longitud cero (porque no existen elementos aindexar).

Coercion de tipos

Los tipos son automaticamente convertidos ocoercidos(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 devectores en R. Valores logicos pueden ser interpretadoscomo numericos si se toma el valor de FALSE sera 0 y elvalor de TRUE como 1, valores numericos pueden serinterpretados como complejos tomando la parte imaginariacomo cero y todos los modos pueden ser interpretados comocaracteres solo tomando sus representaciones impresas.> c(T,1+3i)

Idiomas de la coercion de tipos

La coercion esta en el corazon de varios idiomas en R. Unejemplo comun es contar el numero de elementos de unvector para la cual una condicion es verdad. Por ejemplo,la expresion sum(x>5) cuenta el numero 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

Coercion explıcita

R forzara automaticamente coerciona vectores utilizando elorden natural de modo vector. Otras ocaciones debenllevarse acabo utilizando coercion explıcita con las funcionesas.logical, as.numeric, as.complex y as.character.> "2" + "3"

Error en "2" + "3" : argumento no-numerico para

operador binario

> as.numeric("2") + as.numeric("3")

[1] 5

Vectores nombrados

Vectores de cualquiera de los tipos basicos pueden seraumentados 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 extraidosusando la funcion names.> names(v)

[1] "a" "b" "c" "d"

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos 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 comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos 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 comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Ejercicio: Cambiar la etiqueta "b" por "m"

Subconfiguracion usando nombres

los nombres pueden tambien ser usados para extraerelementos 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 comosigue> v["a"]

a

1

> v[c("a", "d")]

a d

1 4

Ejercicio: Cambiar la etiqueta "b" por "m"> names(v)[2]="m"

Listas con nombres

Los elementos de una lista pueden ser nombrados. Esto sepuede hacer con la funcion names o directamente en lallamada a list. Cuando los elementos son nombrados, elnombre aparece en lugar de la informacion de indexacion> v=list(a=10, b="once", T)

> v

$a

[1] 10

$b

[1] "once"

[[3]]

[1] TRUE

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 lalista. El segundo es una lista conteniendo ese elemento.

Extraccion de elementos con nombre

Elementos con nombre pueden ser extraidos de una lista dela misma manera que los elementos con nombre sonextraidos desde vectores.> lst = list(a=10, b="once", T)

> lst[["a"]]

[1] 10

Esta es una operacion comun, existe una abreviatura paraesto.> lst$a

[1] 10

El objeto NULL

Existe un objeto especial en R llamado el objeto NULL quees usado para representar “ nada ”. El objeto NULL tieneuna longitud de cero y puede ser libremente coaccionado yasea aun vector o lista de longitud cero.> length(NULL)

[1] 0

> as.numeric(NULL)

numeric(0)

> as.list(NULL)

list()

top related