Beruflich Dokumente
Kultur Dokumente
Captulo 3
Los objetos
La forma bsica de efectuar clculos y anlisis en R se basa en expresiones que definen e involucran
a objetos. Un objeto representa una variable a la cual es posible asignarle uno o ms valores, los
cuales pueden ser numricos, lgicos o de caracteres. En este captulo se describir la construccin
y evaluacin de expresiones a travs de objetos. Como los objetos forman parte fundamental de
R, la lectura de ste captulo es crucial para poder entender la sintaxis de los mtodos presentados
en este texto.
3.1. La asignacin de valores a objetos
Una sesin en R puede considerarse como una serie de expresiones donde cada una de ellas
puede definir o evaluar objetos. El valor de un objeto se puede designar usando algn nombre o
letra arbitrarios, un smbolo de una flecha a la izquierda formado por las teclas < y - (<-) o a la
derecha formado por las teclas - y > (->), dependiendo si el nombre se encuentra a la izquierda o
a la derecha respectivamente, y tecleando el nmero o conjunto de valores que definan al objeto.
Ejemplo 3.1. En el Ejemplo 2.1 ya se ilustr que la expresin 2*2 produce el valor 4. Para
asignar este valor a un objeto con el nombre resultado.multi se teclea
Pantalla de R Asignacin de un objeto
> resultado.multi <- 2*2
>
o bien
Pantalla de R Otra manera de asignar un valor al objeto
> 2*2 -> resultado.multi
>
De esta forma, el valor 4 queda asignado al objeto resultado.multi y en un futuro, cuando sea
invocado, ya se sabe que se el valor del objeto corresponde al nmero 4. Esto se puede compro-
bar al simplemente teclear resultado.multi en el prompt y oprimir Enter enseguida. Esta simple
instruccin ocasiona que se muestre en la pantalla el valor asignado del objeto.
0
0
Gabriel Escarela 40
Universidad Autnoma Metropolitana/ Unidad Iztapalapa/ Divisin de Ciencias Bsicas e Ingeniera
Nota Nombrar los objetos
Los nombres de los objetos se pueden eligir con bastante libertad. Estos se pueden
crear usando letras, nmeros y puntos. Desde luego, hay ciertas limitaciones tales
como que el nombre no debe empezar con un nmero (por ejemplo 1resultado)
o con un punto seguido por un nmero (por ejemplo .1resultado). Los nom-
bres que empiezan con un punto son especiales y se deben evitar. Tambin hay
algunos nombres ya reservados por el sistema, tales como F, in y t. Si se quiere
usar uno de estos nombres, entonces el sistema lanzar una advertencia de error.
Es muy importante tomar en consideracin que los nombres de los objetos son
sensibles a las maysculas y minsculas. De esta manera los nombres resultado y
Resultado no se refieren al mismo objeto.
3.2. Los tipos de valores
Las asignaciones de los objetos no slo pueden ser de tipo numrico. En muchas circunstancias
es til definir un vector cuyas entradas son de tipo carcter o de tipo lgico. A continuacin se
describen los tres principales tipos de valores en R.
3.2.1. El tipo nmerico
Una de las cualidades ms simples y cruciales de R es su uso como calculadora. Por medio de
expresiones aritmticas y de funciones es posible realizar el cmputo de frmulas especficas. La
Tabla 3.1 lista un compendio de operaciones y funciones matemticas bsicas para el clculo de
frmulas matemticas con sus respectivos ejemplos.
Tabla 3.1: Operaciones y funciones matemticas.
Funcin Comando Ejemplo Resultado
Adicin
Deviacin estndar
Divisin
Exponencial
Multiplicacin
Pi ()
Potencia
Promedio
Raz quadrada
Substraccin
Suma ()
Varianza
+
sd( )
/
exp( )
*
pi
^
mean( )
sqrt( )
-
sum( )
var( )
100+34
sd(1:2)
12/4
exp(4)
12*4
pi
12^4
mean(c(1,2,3))
sqrt(144)
100-34
sum(1,2,3,4,5)
var(c(1,2,3,4,5))
134
0.7071068
3
54.59815
48
3.141593
20736
2
12
66
15
2.5
41
R para Tod@s: Un Enfoque Aplicado al Anlisis Estadstico Bsico
Captulo 3. Los objetos
3.2.2. El tipo lgico
En R es posible crear un vector de variables lgicas cuyos valores posibles son cierto o falso.
Ejemplo 3.2. Para declarar el vector de tipo lgico logicos cuyas entradas son cierto, falso, falso,
falso, cierto, cierto, en ese orden, se pueden usar las siguientes concanetaciones:
Pantalla de R Asignacin de valores lgicos
> logicos <- c(TRUE, FALSE, FALSE, FALSE, TRUE, TRUE)
>
o ms breve
Pantalla de R Breve manera de asignar valores lgicos
> logicos <- c(T,F,F,F,T,T)
>
Las letras T y F son reservadas por el programa y sus valores son TRUE (cierto) y FALSE (falso),
respectivamente.
3.2.3. El tipo carcter
Un vector de tipo carcter es un vector cuyas entradas se determinan por cadenas de texto que se
especifican entre comillas.
Ejemplo 3.3. Para crear el vector ciudades cuyas entradas sean los textos Puebla, D.F. y Oaxaca
se pueden usar las siguientes concanetaciones:
Pantalla de R Asignacin de caracteres
> ciudades <- c(Puebla, D.F., Oaxaca)
>
o con comillas simples
Pantalla de R Otra manera de asignar valores de caracteres
> ciudades <- c(Puebla, D.F., Oaxaca)
>
0
0
0
0
Gabriel Escarela 42
Universidad Autnoma Metropolitana/ Unidad Iztapalapa/ Divisin de Ciencias Bsicas e Ingeniera
Nota Vectores de caracteres predeterminados
El R tiene predeterminados vectores de caracteres los cuales incluyen:
LETTERS cuyas entradas son las letras maysculas del alfabeto ingls,
letters cuyas entradas son las letras minsculas del alfabeto ingls,
month.name cuyas entradas son los nombres de los meses en ingls, y
month.abb cuyas entradas son las abreviaturas de los nombres de los meses en ingls.
3.3. Los vectores
Una forma conveniente de guardar una serie de valores en un solo objeto es a travs de un vec-
tor de datos. Un vector es un arreglo que contiene cierto nmero de entradas predeterminadas.
En general un vector se puede crear usando la funcin c() cuyos argumentos son los valores que
corresponden a cada una de las entradas del vector. De esta forma, la funcin c() bsicamente
concatena todos los valores en los argumentos. La letra c (en minscula) es una abreviatura para
concatenate que significa colecciona estos nmeros para formar un vector.
Ejemplo 3.4. Se desea crear un vector con las entradas numricas 6, 5, 3, 6, 5, 3 en ste orden.
Cuando se hace la asigancin y se invoca al objeto generado, el usuario puede ver en la pantalla
principal la siguiente salida:
Pantalla de R Asignacin de una serie de valores a un objeto
> serie.1 <- c(6,5,3,6,5,3)
> serie.1
[1] 6 5 3 6 5 3
>
Alternativamente, el comando scan() permite al usuario capturar los datos del vector manu-
almente uno por uno o bien varios valores delimitados por espacios. Cuando ya se han entrado
todos los valores simplemente se oprime Enter () para avisarle al R que ya se termin la captura
de datos.
Ejemplo 3.5. Para obtener el vector serie.1 del ejemplo anterior ingresando los datos delim-
itados por un espacio se usa la instruccin scan() la cual ocasiona que aparezca 1:, lo que indica
que el R est listo para recibir el primer conjunto de los datos. El usuario debe teclear 6 5 3 6 5 3
seguido de Enter, y un Enter adicional en la sptima entrada para as terminar con la instruccin. El
resultado es que se ha creado el vector numrico serie.1 con seis entradas, lo que se confirma con
el mensaje Read 6 items (se leyeron 6 artculos):
0
43
R para Tod@s: Un Enfoque Aplicado al Anlisis Estadstico Bsico
Captulo 3. Los objetos
Pantalla de R Asignacin de una serie de valores a un objeto usando scan()
> serie.1 <- scan()
1: 6
2: 5
3: 3
4: 6
5: 5
6: 3
7:
Read 6 items
>
3.3.1. Vectores con patrones
Para crear vectores numricos con algn patrn ya sea ascendente o descendente se puede usar la
funcin seq(). Los argumentos de sta funcin se describen a continuacin:
from el valor que comienza la sucesin de nmeros en el vector
to el valor que finaliza la sucesin
by el tamao del incremento (o decremento) de la sucesin
length el nmero de entradas deseado en la sucesin.Generalmente se especifica cuando se
omite el argumento by.
Ejemplo 3.6. Si se desea crear un vector que contiene nmeros desde 1 hasta 10, en ese orden,
el usuario puede usar varias posibilidades:
Pantalla de R Asignacin de una secuencia de valores
> ascendentes <- seq(from=1, to=10, by=1)
>
0
0
Gabriel Escarela 44
Universidad Autnoma Metropolitana/ Unidad Iztapalapa/ Divisin de Ciencias Bsicas e Ingeniera
u omitiendo los nombres de los argumentos pero respetando el orden
Pantalla de R Breve manera de asignar una secuencia de valores
> ascendentes <- seq(1,10,1)
>
o sin necesidad de especificar el tamao del incremento
Pantalla de R Asignacin de una secuencia de valores sin by
> ascendentes <- seq(from=1, to=10)
>
o bien
Pantalla de R Breve manera de asignar una secuencia de valores sin by
> ascendentes <- seq(1,10)
>
o an ms breve, cuando se tienen enteros,
Pantalla de R Manera an ms breve de asignar una secuencia sin by
> ascendentes <- 1:10
>
Ntese que en los tres ltimos ejemplos se pudo dejar de especificar el argumento by el cual, en
presencia de enteros en from y to, est predeterminado como by=1.
Todas las formas de asignacin del objeto ascendentes resultan en un vector cuyos valores
son 1, ..., 10.
Pantalla de R
> ascendentes
[1] 1 2 3 4 5 6 7 8 9 10
>
0
0
0
0
0
45
R para Tod@s: Un Enfoque Aplicado al Anlisis Estadstico Bsico
Captulo 3. Los objetos
Ejemplo 3.7. Para generar la secuencia en el orden inverso se tienen las siguientes posibilidades:
Pantalla de R Asignacin de una secuencia
> descendentes <- seq(from=10, to=1, by=-1)
>
o bien
Pantalla de R Asignacin de una secuencia
> descendentes <- seq(from=10, to=1, length=10)
>
o en la forma ms breve
Pantalla de R Manera ms breve de asignar una secuencia
> descendentes <- seq(10,1,-1)
>
o an ms breve
Pantalla de R Manera an ms breve de asignar una serie de valores
> descendentes <- seq(10,1)
>
o
Pantalla de R Otra manera an ms breve de asignar una secuencia
> descendentes <- 10:1
>
El vector descendentes contiene los diez nmeros enteros desde 10 hasta 1. Cuando la secuencia
es inversa y se usa el parmetro by, es importante que ste sea negativo. Otra forma de obtener el
orden reverso es usando la funcin rev() como se muestra a continuacin:
0
0
0
0
0
Gabriel Escarela 46
Universidad Autnoma Metropolitana/ Unidad Iztapalapa/ Divisin de Ciencias Bsicas e Ingeniera
Pantalla de R Asignacin en orden reverso
> descendentes <- rev(ascendentes)
>
3.3.2. Vectores formados con repeticiones
Cuando se desea obtener un vector cuyos elementos son repeticiones de entradas o repeticiones
de sucesiones, es posible usar la funcin rep() cuyos argumentos son x, un escalar o vector, y
times, el nmero de veces que se repetir x.
Ejemplo 3.8. Se desea obtener un vector cuyas entradas son 6, 5, 3, 6, 5 y 3. Aqu se puede
concatenar el vector c(6,5,3) dos veces para generar otro vector con las entradas deseadas de la
siguiente forma:
Pantalla de R Secuencias repetitivas
> serie.1 <- rep(x=c(6,5,3),times=2)
>
Ejemplo 3.9. Se desea obtener un vector cuyas entradas son 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5. Es
posible pedirle a R que repita las entradas usando la funcin c para concatenar varios valores
repetitivos:
Pantalla de R Valores repetitivos
> serie.2 <- rep(6:5, c(3,8))
>
Aqu se tiene que los valores 6 y 5, los cuales estn contenidos en el vector 6:5, se repiten tres y
ocho veces respectivamente.
Para sucesiones ms complejas con varias repeticiones de vectores es posible concatenar varios
vectores que contengan varias sucesiones diferentes cada uno.
Ejemplo 3.10. La sucesin 6, 5, 3, 6, 5, 3, 4, 7, 7, 7, est comprendida por la secuencia 6, 5, 3,
que aparece dos veces, un cuatro, y tres veces el siete. El vector resultante puede expresarse con
Pantalla de R Concatenacin de secuencias y valores repetitivos
> serie.3 <- c(rep(c(6,5,3),2), 4, rep(7,3))
>
0
0
0
0
47
R para Tod@s: Un Enfoque Aplicado al Anlisis Estadstico Bsico
Captulo 3,. Los objetos
3.3.3. Lectura de vectores desde un archivo
En varias circunstancias es necesario crear un vector cuyas entradas estn contenidas en un archivo
de texto. La funcin scan(), cuyo uso fue ilustrado en el Ejemplo 3.5, lee todos los valores dados en
un archivo de texto rengln por rengln y los convierte a un vector. El argumento necesario para la
ejecucin de la lectura es el nombre del archivo escrito entre comillas.
Ejemplo 3.11. Para ver cmo funciona la funcin scan() el usuario puede crear un archivo de
texto al activar el Explorador de Windows y ubicarlo en la carpeta donde se encuentra el directorio
de trabajo actual, dar clic derecho, escoger Nuevo y despus Documento de texto, escribir el
nombre NumFibonacci y dar doble clic en el cono, lo que lanza la pantalla de un editor en blanco.
Aqu el usuario puede escribir el siguiente texto que corresponde a los primeros diez nmeros de
Fibonacci delimitados por un espacio:
Documento de texto Los primeros diez nmeros de Fibonacci
1 1 2 3 5 8 13 21 34 55
Despus de guardar el texto el usuario debe de salir del editor. La siguiente instruccin en R lee los
datos y los guarda en el vector fibonacci:
Pantalla de R Leer datos desde un archivo
> fibonacci <- scan(NumFibonacci.txt)
Read 10 items
>
Es importante que el archivo de texto se encuentre en el mismo directorio que se haba establecido
como directorio de trabajo anteriormente, lo cual se explica en el Captulo 2.2.2 y en la nota im-
portante del Captulo 2.3.
Si se invoca al objeto fibonacci se puede confirmar que efectivamente los datos estn conteni-
dos en las entradas del vector:
Pantalla de R Ver datos que se leyeron desde un archivo
> fibonacci
[1] 1 1 2 3 5 8 13 21 34 55
>
Es comn encontrar conjuntos de datos en pginas de internet los cuales generalmente se encuen-
tran en formato de texto y delimitados por espacios. La funcin scan() tiene la capacidad de entrar
0
0
Gabriel Escarela 48
Universidad Autnoma Metropolitana/ Unidad Iztapalapa/ Divisin de Ciencias Bsicas e Ingeniera
al archivo de internet para importar los datos y colocarlos en un vector. El nico argumento nece-
sario es la direccin de la pgina donde se encuentran los datos y sta se escribe entre comillas.
Ejemplo 3.12. El sitio de internet http://www.statsci.org/data/general/nerve.html describe
un conjunto de datos presentado en Fatt y Katz (1952), el cual consiste de lapsos de tiempo
entre 800 pulsos consecutivos en una fibra nerviosa. Los datos se pueden ver en la pgina
http://www.statsci.org/data/general/nerve.txt. Para bajar los datos de internet y colocarlos en el
vector tiempos.FK52 se emplea la siguiente instruccin:
Pantalla de R Leer datos desde un archivo en el internet
> tiempos.FK52 <- scan(http://www.statsci.org/data/general/nerve.txt)
Read 799 items
>
El mensaje Read 799 items indica que se leyeron 799 datos.
En vez de invocar el objeto en el prompt para poder ver los datos contenidos en tiempos. FK52
se puede emplear la funcin page() para que estos valores aparezcan en una ventana adicional y
as no se llene de muchos nmeros la ventana R Console. Una instruccin conveniente para esta
tarea es:
Pantalla de R Ver datos en una ventana adicional
> page(tiempos.FK52, method=print)
>
0
0
49
R para Tod@s: Un Enfoque Aplicado al Anlisis Estadstico Bsico
Captulo 3. Los objetos
CAP