Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Manual R, Apuntes de Arquitectura de ordenadores

Asignatura: Fonaments de computadors, Profesor: xavier Roca, Carrera: Enginyeria Informàtica, Universidad: UAB

Tipo: Apuntes

2013/2014

Subido el 04/06/2014

fiberman59
fiberman59 🇪🇸

4.7

(3)

2 documentos

1 / 106

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Introducci´on a R
Notas sobre R: Un entorno de programaci´on para An´alisis de Datos y Gr´aficos
Versi´on 1.0.1 (2000-05-16)
R Development Core Team
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Manual R y más Apuntes en PDF de Arquitectura de ordenadores solo en Docsity!

Introducci´on a R

Notas sobre R: Un entorno de programaci´on para An´alisis de Datos y Gr´aficos Versi´on 1.0.1 (2000-05-16)

R Development Core Team

Copyright ©c 1990, 1992 W. Venables Copyright ©c 1997, R. Gentleman & R. Ihaka Copyright ©c 1997, 1998 M. M¨achler Copyright ©c 2000, Andr´es Gonz´alez y Silvia Gonz´alez Copyright ©c 1999, 2000 R Development Core Team

Se autoriza la realizaci´on y distribuci´on de copias literales de este manual, siempre y cuando las advertencias del copyright y de este permiso se conserven en todas las copias.

Se autoriza la realizaci^^f3n y distribuci´on de copias modificadas de este manual, en las mis- mas condiciones de las copias literales, siempre y cuando la totalidad del trabajo resultante se distribuya bajo los t´erminos de una advertencia de permiso id^^e9ntica a esta.

Se autoriza la realizaci^^f3n y distribuci´on de traducciones de este manual a otros idiomas, en las mismas condiciones de las copias modificadas, siempre y cuando la traducci´on de la advertencia de este permiso sea aprobada por el Equipo Central de Desarrollo de R.

5.7.3 Descomposici´on en valores singulares. Determinantes

................................................ 25 5.7.4 Ajuste por m´ınimos cuadrados. Descomposici´on QR

5.9 La funci´on de concatenaci´on, c(), con variables indexadas

11.3 Funciones gen´ericas de extracci´on de informaci´on del modelo

Pr´ologo 1

Pr´ologo

Estas notas sobre R est´an escritas a partir de un conjunto de notas que describ´ıan los entornos S y S-Plus escritas por Bill Venables y Dave Smith. Hemos realizado un peque˜no n´umero de cambios para reflejar las diferencias entre R y S.

R es un proyecto vivo y sus capacidades no coinciden totalmente con las de S. En estas notas hemos adoptado la convenci´on de que cualquier caracter´ıstica que se vaya a implementar se especifica como tal en el comienzo de la secci´on en que la caracter´ıstica es descrita. Los usuarios pueden contribuir al proyecto implementando cualquiera de ellas.

Deseamos dar las gracias m´as efusivas a Bill Venables por permitir la distribuci´on de esta versi´on modificada de las notas y por ser un defensor de R desde su inicio.

Cualquier comentario o correcci´on ser´an siempre bienvenidos. Dirija cualquier correspon- dencia a [email protected].

Sugerencias al lector

La primera relaci´on con R deber´ıa ser la sesi´on inicial del Apendice A [Ejemplo de sesion], p´agina 84. Est´a escrita para que se pueda conseguir cierta familiaridad con el estilo de las sesiones de R y para comprobar que coincide con la versi´on actual.

Muchos usuarios eligen R fundamentalmente por sus capacidades gr´aficas. Si ese es su caso, deber´ıa leer antes o despu´es el Cap´ıtulo 12 [Graficos], p´agina 69, sobre capacidades gr´aficas y para ello no es necesario esperar a haber asimilado totalmente las secciones precedentes.

Cap´ıtulo 1: Introducci´on y Preliminares 2

1 Introducci´on y Preliminares

1.1 El entorno R

R es un conjunto integrado de programas para manipulaci´on de datos, c´alculo y gr´aficos. Entre otras caracter´ısticas dispone de:

  • almacenamiento y manipulaci´on efectiva de datos,
  • operadores para c´alculo sobre variables indexadas (Arrays), en particular matrices,
  • una amplia, coherente e integrada colecci´on de herramientas para an´alisis de datos,
  • posibilidades gr´aficas para an´alisis de datos, que funcionan directamente sobre pantalla o impresora, y
  • un lenguaje de programaci´on bien desarrollado, simple y efectivo, que incluye condicionales, ciclos, funciones recursivas y posibilidad de entradas y salidas. (Debe destacarse que muchas de las funciones suministradas con el sistema est´an escritas en el lenguaje R) El t´ermino “entorno” lo caracteriza como un sistema completamente dise˜nado y co- herente, antes que como una agregaci´on incremental de herramientas muy espec´ıficas e inflexibles, como ocurre frecuentemente con otros programas de an´alisis de datos.

R es en gran parte un veh´ıculo para el desarrollo de nuevos m´etodos de an´alisis interactivo de datos. Como tal es muy din´amico y las diferentes versiones no siempre son totalmente compatibles con las anteriores. Algunos usuarios prefieren los cambios debido a los nuevos m´etodos y tecnolog´ıa que los acompa˜nan, a otros sin embargo les molesta ya que alg´un c´odigo anterior deja de funcionar. Aunque R puede entenderse como un lenguaje de programaci´on, los programas escritos en R deben considerarse esencialmente ef´ımeros.

1.2 Programas relacionados. Documentaci´on

R puede definirse como una nueva implementaci´on del lenguaje S desarrollado en AT&T por Rick Becker, John Chambers y Allan Wilks. Muchos de los libros y manuales sobre S son ´utiles para R.

La referencia b´asica es The New S Language: A Programming Environment for Data Analysis and Graphics de Richard A. Becker, John M. Chambers and Allan R. Wilks. Las caracter´ısticas de la versi´on de agosto de 1991 de S est´an recogidas en Statistical Models in S editado por John M. Chambers y Trevor J. Hastie. V´ease Apendice F [Referencias], p´agina 100, para referencias concretas.

1.3 Estad´ıstica con R

En la introducci´on a R no se ha mencionado la palabra estad´ıstica, sin embargo muchas personas utilizan R como un sistema estad´ıstico. Nosotros preferimos describirlo como un entorno en el que se han implementado muchas t´ecnicas estad´ısticas, tanto cl´asicas como modernas. Algunas est´an incluidas en el entorno base de R y otras se acompa˜nan en forma de bibliotecas (packages). El hecho de distinguir entre ambos conceptos es funda- mentalmente una cuesti´on hist´orica. Junto con R se incluyen ocho bibliotecas (llamadas

Cap´ıtulo 1: Introducci´on y Preliminares 4

R preguntar´a si desea salvar los datos de esta sesi´on de trabajo. Puede responder yes (Si), no (No) o cancel (cancelar) pulsando respectivamente las letras y, n o c, en cada uno de cuyos casos, respectivamente, salvar´a los datos antes de terminar, terminar´a sin salvar, o volver´a a la sesi´on de R. Los datos que se salvan estar´an disponibles en la siguiente sesi´on de R. Volver a trabajar con R es sencillo:

  1. Haga que ‘trabajo’ sea su directorio de trabajo e inicie el programa como antes: $ cd trabajo $ R
  2. D´e las ´ordenes que estime convenientes a R y termine la sesi´on con la orden q(). Bajo Microsoft Windows el procedimiento a seguir es b´asicamente el mismo: Cree una carpeta o directorio. Ejecute R haciendo doble click en el icono correspondiente. Seleccione New dentro del men´u File para indicar que desea iniciar un nuevo problema (lo que eliminar´a todos los objetos definidos dentro del espacio de trabajo) y a continuaci´on seleccione Save dentro del men´u File para salvar esta imagen en el directorio que acaba de crear. Puede comenzar ahora los an´alisis y cuando salga de R, ´este le preguntar´a si desea salvar la imagen en el directorio de trabajo.

Para continuar con este an´alisis posteriormente basta con pulsar en el icono de la imagen salvada, o bien puede ejecutar R y utilizar la opci´on Open dentro del men´u File para seleccionar y abrir la imagen salvada.

1.6 Una sesi´on inicial

Se recomienda a los lectores que deseen ver c´omo funciona R que realicen la sesi´on inicial dada en el Apendice A [Ejemplo de sesion], p´agina 84.

1.7 Ayuda sobre funciones y capacidades

R contiene una ayuda similar a la orden man de UNIX. Para obtener informaci´on sobre una funci´on concreta, por ejemplo solve, la orden es

help(solve) Una forma alternativa es ?solve Con las funciones especificadas por caracteres especiales, el argumento deber´a ir entre comillas, para transformarlo en una ”cadena de caracteres”:

help("[[") Podr´a utilizar tanto comillas simples como dobles, y cada una de ellas puede utilizarse dentro de la otra, como en la frase "Dijo ’Hola y adi´os’ y se march´o". En estas notas utilizaremos dobles comillas.

En muchas versiones de R puede acceder a la ayuda escrita en formato html, escribiendo

help.start()

que ejecuta un lector Web (Netscape en UNIX) para leer estas p´aginas como hipertextos. En UNIX, las peticiones de ayuda posteriores se envir´an al sistema de ayuda basado en html.

Cap´ıtulo 1: Introducci´on y Preliminares 5

Las versiones de Microsoft Windows de R poseen otros sistemas de ayuda opcionales. Utilice

?help

para obtener detalles adicionales.

1.8 Ordenes de R. May´´ usculas y min´usculas

T´ecnicamente hablando, R es un lenguaje de expresiones con una sintaxis muy simple. Consecuente con sus or´ıgenes en UNIX, distingue entre may´usculas y min´usculas, de tal modo que A y a son s´ımbolos distintos y se referir´an, por tanto, a objetos distintos.

Las ´ordenes elementales consisten en expresiones o en asignaciones. Si una orden consiste en una expresi´on, se eval´ua, se imprime y su valor se pierde. Una asignaci´on, por el contrario, eval´ua una expresi´on, no la imprime y guarda su valor en una variable.

Las ´ordenes se separan mediante punto y coma, (‘;’), o mediante un cambio de l´ınea. Si al terminar la l´ınea, la orden no est´a sint´acticamente completa, R mostrar´a un signo de continuaci´on, por ejemplo

en la l´ınea siguiente y las sucesivas y continuar´a leyendo hasta que la orden est´e sint´acticamente completa. El signo de continuaci´on puede ser modificado f´acilmente. En estas notas omitiremos generalmente el s´ımbolo de continuaci´on y lo indicaremos mediante un sangrado.

1.9 Recuperaci´on y correcci´on de ´ordenes previas

Bajo muchas versiones de UNIX, R permite recuperar y ejecutar ´ordenes previas. Las flechas verticales del teclado puede utilizarse para recorrer el historial de ´ordenes. Cuando haya recuperado una orden con este procedimiento, puede utilizar las flechas horizontales para desplazarse por ella, puede eliminar caracteres con la tecla 〈DEL〉, o a˜nadir nuevos ca- racteres. M´as adelante se dar´an mayores detalles, v´ease Apendice C [El editor de ordenes], p´agina 93.

La recuperaci´on y edici´on en UNIX pueden ser f´acilmente adaptadas. Para ello debe buscar en el manual de UNIX la informaci´on sobre readline.

Tambi´en puede utilizar el editor de textos emacs para trabajar m´as c´omodamente de modo interactivo con R, mediante ESS.^1

1.10 Ejecuci´on de ´ordenes desde un archivo y redirecci´on de

la salida

Si tiene ´ordenes almacenadas en un archivo del sistema operativo, por ejemplo ´ordenes.R, en el directorio de trabajo, trabajo, puede ejecutarlas dentro de una sesi´on de R con la orden

source("´ordenes.R") En la versi´on de Microsoft Windows, Source tambi´en est´a disponible dentro del men´u File. Por otra parte, la orden sink, como por ejemplo en

(^1) Acr´onimo en ingl´es de Emacs Speaks Statistics.

Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 7

2 C´alculos sencillos. N´umeros y vectores

2.1 Vectores (num´ericos). Asignaci´on

R utiliza diferentes estructuras de datos. La estructura m´as simple es el vector, que es una colecci´on ordenada de n´umeros. Para crear un vector, por ejemplo x, consistente en cinco n´umeros, por ejemplo 10.4, 5.6, 3.1, 6.4 y 21.7, use la orden

x <- c(10.4, 5.6, 3.1, 6.4, 21.7)

Esta es una asignaci´on en la que se utiliza la funci´on c() que, en este contexto, puede tener un n´umero arbitrario de vectores como argumento y cuyo valor es el vector obtenido mediante la concatenaci´on de todos ellos.^1

Un n´umero, por s´ı mismo, se considera un vector de longitud uno.

Advierta que el operador de asignaci´on, (‘<-’), no es el operador habitual, ‘=’, que se reserva para otro prop´osito, sino que consiste en dos caracteres, ‘<’ (‘menor que’) y ‘-’ (‘gui´on’), que obligatoriamente deben ir unidos y ’apuntan’ hacia el objeto que recibe el valor de la expresi´on.^2

La asignaci´on puede realizarse tambi´en mediante la funci´on assign(). Una forma equi- valente de realizar la asignaci´on anterior es

assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7))

El operador usual, <-, puede interpretarse como una abreviatura de la funci´on assign().

Las asignaciones pueden realizarse tambi´en con una flecha apuntando a la derecha, rea- lizando el cambio obvio en la asignaci´on. Por tanto, tambi´en podr´ıa escribirse

c(10.4, 5.6, 3.1, 6.4, 21.7) -> x

Si una expresi´on se utiliza como una orden por s´ı misma, su valor se imprime y se pierde^3. As´ı pues, la orden

1/x

simplemente imprime los inversos de los cinco valores anteriores en la pantalla (por supuesto, el valor de x no se modifica).

Si a continuaci´on hace la asignaci´on

y <- c(x, 0, x)

crear´a un vector, y, con 11 elementos, consistentes en dos copias de x con un cero entre ambas.

(^1) Con argumentos diferentes, por ejemplo listas, la acci´on de c() puede ser diferente. Vea Secci´on 6.2. [Concatenacion de listas], p´agina 29. (^2) El s´ımbolo de subrayado, ‘_’, es un sin´onimo del operador de asignaci´on, pero no aconsejamos su uti- lizaci´on ya que produce un c´odigo menos legible. (^3) Aunque, de hecho, se almacena en .Last.value hasta que se ejecute otra orden.

Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 8

2.2 Aritm´etica vectorial

Los vectores pueden usarse en expresiones aritm´eticas, en cuyo caso las operaciones se realizan elemento a elemento. Dos vectores que se utilizan en la misma expresi´on no tienen por qu´e ser de la misma longitud. Si no lo son, el resultado ser´a un vector de la longitud del m´as largo, y el m´as corto ser´a reciclado, repiti´endolo tantas veces como sea necesario (puede que no un n´umero exacto de veces) hasta que coincida con el m´as largo. En particular, cualquier constante ser´a simplemente repetida. De este modo, y siendo x e y los vectores antes definidos, la orden

v <- 2*x + y + 1

genera un nuevo vector, v, de longitud 11, construido sumando, elemento a elemento, el vector 2*x repetido 2.2 veces, el vector y, y el n´umero 1 repetido 11 veces.

Los operadores aritm´eticos elementales son los habituales +, - , *, / y ^ para elevar a una potencia. Adem´as est´an disponibles las funciones log, exp, sin, cos, tan, sqrt, bien conocidas. Existen muchas m´as funciones, entre otras, las siguientes: max y min que seleccionan respectivamente el mayor y el menor elemento de un vector; range cuyo valor es el vector de longitud dos, c(min(x), max(x)); length(x) que es el n´umero de elementos o longitud de x; sum(x) que es la suma de todos los elementos de x; y prod(x) que es el producto de todos ellos.

Dos funciones estad´ısticas son mean(x), que calcula la media, esto es, sum(x)/length(x) y var(x) que calcula la cuasi-varianza, esto es, sum((x-mean(x))^2)/(length(x)-1) Si el argumento de var() es una matriz n × p, el resultado es la matriz de cuasi- covarianzas p×p correspondiente a interpretar las filas como vectores muestrales p-variantes.

Para ordenar un vector dispone de la funci´on sort(x) que devuelve un vector del mismo tama˜no que x con los elementos ordenados en orden creciente. Tambi´en dispone de order() y de sort.list(), que produce la permutaci´on del vector que corresponde a la ordenaci´on.

Advierta que max y min seleccionan el mayor y el menor valor de sus argumentos, incluso aunque estos sean varios vectores. Las funciones paralelas pmax y pmin devuelven un vector (de la misma longitud del argumento m´as largo) que contiene en cada elemento el mayor y menor elemento de dicha posici´on de entre todos los vectores de entrada.

En la mayor´ıa de los casos, el usuario no debe preocuparse de si los “n´umeros” de un vec- tor num´erico son enteros, reales o incluso complejos. Los c´alculos se realizan internamente como n´umeros de doble precisi´on, reales o complejos seg´un el caso.

Para trabajar con n´umeros complejos, debe indicar expl´ıcitamente la parte compleja. As´ı

sqrt(-17)

devuelve el resultado NaN y un mensaje de advertencia, pero

sqrt(-17+0i)

realiza correctamente el c´alculo de la ra´ız cuadrada de este n´umero complejo.

Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 10

Los operadores l´ogicos son < (menor), <= (menor o igual), > (mayor), >= (mayor o igual), == (igual), y != (distinto). Adem´as, si c1 y c2 son expresiones l´ogicas, entonces c1&c2 es su intersecci´on (“conjunci´on”), c1|c2 es su uni´on (“disyunci´on”) y !c1 es la negaci´on de c1.

Los vectores l´ogicos pueden utilizarse en expresiones aritm´eticas, en cuyo caso se trans- forman primero en vectores num´ericos, de tal modo que F se transforma en 0 y T en 1. Sin embargo hay casos en que un vector l´ogico y su correspondiente num´erico no son equiva- lentes, como puede ver a continuaci´on.

2.5 Valores faltantes

En ocasiones puede que no todas las componentes de un vector sean conocidas. Cuando falta un elemento, lo que se denomina ’valor faltante’^4 , se le asigna un valor especial, NA^5. En general, casi cualquier operaci´on donde intervenga un valor NA da por resultado NA. La justificaci´on es sencilla: Si no se puede especificar completamente la operaci´on, el resultado no podr´a ser conocido, y por tanto no estar´a disponible.

La funci´on is.na(x) crea un vector l´ogico del tama˜no de x cuyos elementos s´olo valdr´an T si el elemento correspondiente de x es NA, y F en caso contrario.

z <- c(1:3,NA); ind <- is.na(z) N´otese que la expresi´on l´ogica x == NA es distinta de is.na(x) puesto que NA no es realmente un valor, sino un indicador de una cantidad que no est´a disponible. Por tanto x == NA es un vector de la misma longitud de x con todos sus elementos NA puesto que la expresi´on l´ogica es incompleta.

Adem´as hay una segunda clase de valores “faltantes”, producidos por el c´alculo. Son los llamados valores NaN 6. Este tipo de dato no existe en S, y por tanto se confunden con NA en S-Plus. Ejemplos de NaN son

0/

o

Inf - Inf En resumen, is.na(xx) es TRUE tanto para los valores NA como para los NaN. Para diferenciar estos ´ultimos existe la funci´on is.nan(xx) que s´olo toma el valor TRUE para valores NaN.

2.6 Vectores de caracteres

Las cadenas de caracteres, o frases, tambi´en son utilizadas en R, por ejemplo, para etiquetar gr´aficos. Una cadena de caracteres se construye escribiendo entre comillas la sucesi´on de caracteres que la define, por ejemplo, "Altura" o "Resultados de la tercera iteraci´on".

Los vectores de caracteres pueden concatenarse en un vector mediante la funci´on c().

(^4) En la literatura estad´ıstica inglesa, “missing value” (^5) Acr´onimo en ingl´es de “Not Available”, no disponible. (^6) Acr´onimo en ingl´es de “Not a Number”, esto es, “No es un n´umero”.

Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 11

Por otra parte, la funci´on paste() une todos los vectores de caracteres que se le sumi- nistran y construye una sola cadena de caracteres. Tambi´en admite argumentos num´ericos, que convierte inmediatamente en cadenas de caracteres. En su forma predeterminada, en la cadena final, cada argumento original se separa del siguiente por un espacio en blanco, aunque ello puede cambiarse utilizando el argumento sep="cadena", que sustituye el espacio en blanco por cadena, la cual podr´ıa ser incluso vac´ıa.

Por ejemplo,

labs <- paste(c("X","Y"), 1:10, sep="")

almacena, en labs, el vector de caracteres

c("X1", "Y2", "X3", "Y4", "X5", "Y6", "X7", "Y8", "X9", "Y10") Recuerde que al tener c("X", "Y") solo dos elementos, deber´a repetirse 5 veces para obtener la longitud del vector 1:10.^7

2.7 Vectores de ´ındices. Selecci´on y modificaci´on de

subvectores

Puede seleccionar un subvector de un vector a˜nadiendo al nombre del mismo un vector de ´ındices entre corchetes, [ y ]. En general podr´a obtener un subvector de cualquier expresi´on cuyo resultado sea un vector, sin m´as que a˜nadirle un vector de ´ındices entre corchetes.

Los vectores de ´ındices pueden ser de cuatro tipos distintos:

  1. Un vector l´ogico. En este caso el vector de ´ındices debe tener la misma longitud que el vector al que refiere. S´olo se seleccionar´an los elementos correspondientes a valores T del vector de ´ındices y se omitir´a el resto. Por ejemplo, > y <- x[!is.na(x)] almacena en y los valores no-faltantes de x, en el mismo orden. Si x tiene valores faltantes, el vector y ser´a m´as corto que x. An´alogamente, > (x+1)[(!is.na(x)) & x>0] -> z almacena en z los elementos del vector x+1 para los que el correspondiente elemento de x es no-faltante y positivo.
  2. Un vector de n´umeros naturales positivos. En este caso los elementos del vector de ´ındices deben pertenecer al conjunto {1, 2,... , length(x)}. El resultado es un vector formado por los elementos del vector referido que corresponden a estos ´ındices y en el orden en que aparecen en el vector de ´ındices. El vector de ´ındices puede tener cualquier longitud y el resultado ser´a de esa misma longitud. Por ejemplo, x[6] es el sexto elemento de x, y > x[1:10] es el vector formado por los diez primeros elementos de x, (supuesto que length(x) no es menor que 10 ). Por otra parte,

(^7) paste(..., collapse=ss) permite colapsar los argumentos en una sola cadena de caracteres separ´andolos mediante ss. Adem´as existen otras ´ordenes de manipulaci´on de caracteres. como sub y substring. Puede encontrar su descripci´on en la ayuda del programa.

Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 13

  • Las listas son una forma generalizada de vector en las cuales los elementos no tienen por qu´e ser del mismo tipo y a menudo son a su vez vectores o listas. Las listas permiten devolver los resultados de los c´alculos estad´ısticos de un modo conveniente. V´ease Secci´on 6.1 [Listas], p´agina 28.
  • Las hojas de datos (data frames) son estructuras similares a una matriz, en que cada columna puede ser de un tipo distinto a las otras. Las hojas de datos son apropiadas para describir ‘matrices de datos’ donde cada fila representa a un individuo y cada columna una variable, cuyas variables pueden ser num´ericas o categ´oricas. Muchos experimentos se describen muy apropiadamente con hojas de datos: los tratamientos son categ´oricos pero la respuesta es num´erica. V´ease Secci´on 6.3 [Hojas de datos], p´agina 29.
  • Las funciones son tambi´en objetos de R que pueden almacenarse en el espacio de trabajo, lo que permite extender las capacidades de R f´acilmente. V´ease Cap´ıtulo 10 [Escritura de funciones], p´agina 46.

Cap´ıtulo 3: Objetos: Modos y atributos 14

3 Objetos: Modos y atributos

3.1 Atributos intr´ınsecos: modo y longitud

Las entidades que manipula R se conocen con el nombre de objetos. Por ejemplo, los vectores de n´umeros, reales o complejos, los vectores l´ogicos o los vectores de caracteres. Este tipo de objetos se denominan estructuras ‘at´omicas’ puesto que todos sus elementos son del mismo tipo o modo, bien sea numeric^1 (num´erico), complex (complejo), logical (l´ogico) o character (car´acter).

Los elementos de un vector deben ser todos del mismo modo y ´este ser´a el modo del vector. Esto es, un vector ser´a, en su totalidad, de modo logical, numeric, complex o character. La ´unica excepci´on a esta regla es que cualquiera de ellos puede contener el valor NA. Debe tener en cuenta que un vector puede ser vac´ıo, pero pese a ello tendr´a un modo. As´ı, el vector de caracteres vac´ıo aparece como character(0) y el vector num´erico vac´ıo aparece como numeric(0).

R tambi´en maneja objetos denominados listas que son del modo list (lista) y que con- sisten en sucesiones de objetos, cada uno de los cuales puede ser de un modo distinto. Las listas se denominan estructuras ‘recursivas’ puesto que sus componentes pueden ser asimismo listas.

Existen otras estructuras recursivas que corresponden a los modos function (funci´on) y expression (expresi´on). El modo function est´a formado por las funciones que constituyen R, unidas a las funciones escritas por cada usuario, y que discutiremos m´as adelante. El modo expression corresponde a una parte avanzada de R que no trataremos aqu´ı, excepto en lo m´ınimo necesario para el tratamiento de f´ormulas en la descripci´on de modelos estad´ısticos.

Con el modo de un objeto designamos el tipo b´asico de sus constituyentes fundamentales. Es un caso especial de un atributo de un objeto. Los atributos de un objeto suministran informaci´on espec´ıfica sobre el propio objeto. Otro atributo de un objeto es su longitud. Las funciones mode(objeto) y length(objeto) se pueden utilizar para obtener el modo y longitud de cualquier estructura.

Por ejemplo, si z es un vector complejo de longitud 100, entonces mode(z) es la cadena "complex", y length(z) es 100.

R realiza cambios de modo cada vez que se le indica o es necesario (y tambi´en en algunas ocasiones en que no parece que no lo es). Por ejemplo, si escribe

z <- 0:

y a continuaci´on escribe

digitos <- as.character(z)

el vector digitos ser´a el vector de caracteres ("0", "1", "2", ..., "9"). Si a continua- ci´on aplica un nuevo cambio de modo

d <- as.integer(digitos)

R reconstruir´a el vector num´erico de nuevo y, en este caso, d y z coinciden.^2 Existe una colecci´on completa de funciones de la forma as.lo-que-sea(), tanto para forzar el cambio de

(^1) El modo num´erico consiste realmente en dos modos distintos, integer (entero) y double (doble precisi´on). (^2) En general, al forzar el cambio de num´erico a car´acter y de nuevo a num´erico, no se obtienen los mismos resultados, debido, entre otros, a los errores de redondeo.