SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
1
(Versión preliminar)
Rafael, Bustamante Romaní
N° 17
Octubre de 2017
Serie Apuntes de Clase ΩΒΓ
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
Universidad del Perú, DECANA DE AMÉRICA
FACULTAD DE CIENCIAS ECONÓMICAS
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
2
La Serie Apuntes de Clase Omega Beta Gamma tiene por objetivo difundir
los materiales de enseñanza generados por los docentes que tienen a
su cargo el desarrollo de las asignaturas que forman parte de los Planes
de Estudios de las Escuelas Académico-Profesionales de la Facultad de
Ciencias Económicas de la Universidad Nacional Mayor de San Marcos.
Estos documentos buscan proporcionar a los estudiantes la explicación
de algunos temas específicos que son abordados en su formación
universitaria.
Encargados de la serie:
Bustamante Romaní, Rafael. Cisneros García, Juan Manuel.
rbustamanter@unmsm.edu.pe jcisnerosg@unmsm.edu.pe
Facultad de Ciencias Económicas.
Universidad Nacional Mayor de San Marcos.
Calle Germán Amézaga N° 375.
Ciudad Universitaria, Lima 1. Perú.
La Serie Apuntes de Clase ΩΒΓ es promovida y
desarrollada por un colectivo de docentes del
Departamento de Economía de la Universidad
Nacional Mayor de San Marcos.
El contenido de cada publicación es íntegramente
responsabilidad de cada autor, no representa
necesariamente los puntos de vista de los
integrantes del colectivo, ni de la Universidad.
Financeybusinness S.A.C. Es una firma especializada en la
prestación de servicios profesionales en capacitación y de
consultoría en el diseño e implementación de estrategias
empresariales ante los problemas financieros, de gestión y
riesgos a los que se enfrentan las empresas en su normal
funcionamiento.
http://financeybusiness.com
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
3
INTRODUCIÓN AL R Y AL R- STUDIO
.
Rafael Bustamante Romaní
Resumen
R es un programa es ampliamente conocido como un lenguaje de programación y
un entorno para análisis estadístico y la realización de gráficos de gran calidad.
Contiene un entorno de computación viable para la implementación y la
aplicación de métodos numéricos de manera sencilla y efectiva. Aunque R permite
varios estilos de programación, en la medida de lo posible, se usa un estilo
orientado a la "programación de arreglos" (llamado "vectorización"). Como R es
interpretado, se incluye una sección mínima sobre cómo acelerar R usando
"vectorización", o usando el paquete Rcpp para conectar R con C++ y también
paralelización.
El objetivo de estos apuntes de clase es proporcionar las nociones básicas para
personas interesadas en comenzar a utilizar el R. Poniendo énfasis en el
funcionamiento de R, con el objeto de que se pueda usar de una manera básica.
Dado que R ofrece una amplia gama de posibilidades, es útil para el principiante
adquirir algunas nociones y conceptos y así progresar gradualmente.
Se busca simplificar las explicaciones al máximo para hacerlas lo más
comprensivas posibles, pero al mismo tiempo proporcionando detalles útiles,
algunas veces con la ayuda de tablas.
Palabras claves: Método numéricos, lenguaje R, álgebra lineal, ecuaciones no
lineales, integración, ecuaciones diferenciales
Clasificación JEL: C00, C02.

Estudios de Doctorado en Economía, Universidad Autónoma de México. Maestría en Economía con
mención en Finanzas, MBA Centrum Pontificia Universidad Católica del Perú. B. Sc. Economía, Universidad
Nacional Mayor de San Marcos. Profesor del Departamento de Economía de UNMSM. Investigador
asociado al Instituto de Investigaciones FCE – UNMSM. Investiga. Contacto:
rafael.bustamanter@unmsm.edu.pe .
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
4
Contenido
1. Introducción al entorno R ............................................................................................................... 5
2. Ventajas y desventajas de R.......................................................................................................... 9
3. R como un sistema de ventanas................................................................................................... 15
3.1 Utilización interactiva de R...................................................................................................... 15
3.2 Programas relacionados. Documentación .............................................................................. 15
4. Objetos – Tipos (Vector, Array, Matriz, Factor, Serie temporal, Lista, Data frame) ..................... 16
4.1 Objetos.................................................................................................................................... 16
4.1.1 Vectores ........................................................................................................................... 17
4.1.2 Generación de Niveles ..................................................................................................... 19
4.1.3 Factores............................................................................................................................ 21
4.1.3 Indexación de Factores..................................................................................................... 26
4.1.4 Listas................................................................................................................................ 29
5. Operaciones con Matrices............................................................................................................. 30
6. Arrays (Variable Multiindexada) ................................................................................................... 35
Bibliografía ........................................................................................................................................ 35
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
5
1. Introducción al entorno R
El programa R puede entenderse como un lenguaje de programación, como un
potente software de análisis estadísticos o incluso como un generador de gráficos.
Cualquiera de los tres significados es compatible con una definición del R. Estos
apuntes de ofrecen al lector interesado en programación, los conceptos básicos y
necesarios de la sintaxis de R que le permitirán trabajar en un entorno para su uso
con interfaces de códigos1
. Si bien es cierto que existen interfaces gráficas (R
Commander) que facilitan el uso de R como software para el análisis de datos, no
es menos cierto que la adquisición de destrezas en el manejo de unas normas de
sintaxis básicas permitirán al usuario de R beneficiarse aún más de la potencia y de
las ventajas que ofrece este entorno (Elousa, 2010).
Podemos definir R como un entorno en el que se aplican los métodos estadísticos
de análisis de datos. En este entorno, tal como se indica en la web del programa,
www.r-project.org, podemos encontrar los siguientes componentes:
 Herramientas de lectura, importación, gestión y almacenamiento de datos.
 Funciones y operadores diseñados para actuar directamente sobre vectores
o matrices.
 Una gran colección, coherente e integrada, de herramientas para el análisis
de datos.
1
Interfaz es lo que conocemos en inglés como interface (“superficie de contacto”). En informática, se utiliza
para nombrar a la conexión funcional entre dos sistemas, programas, dispositivos o componentes de cualquier
tipo, que proporciona una comunicación de distintos niveles permitiendo el intercambio de información. Su
plural es interfaces. Ejemplos de interfaces en informática son las interfaces de usuario (entre computadora y
persona) como sería una pantalla o un ratón (si hablamos de hardware) o la ventana gráfica de un programa
con la que interactuamos (si hablamos de software); las interfaces físicas (entre dos dispositivos) como el SCSI
o el USB; o las interfaces lógicas (entre dos programas) como la API o el DOM.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
6
 Procedimientos gráficos para el análisis y visualización de datos, ya sea en
pantalla o en papel.
 Un completo y bien desarrollado lenguaje de programación, simple y
eficiente, que incluye gran cantidad de funciones predefinidas, instrucciones
condicionales, bucles, posibilidad de definir funciones recursivas y
procedimientos avanzados de entrada y salida, con la posibilidad de
importar o exportar datos a un gran número de aplicaciones.
 Un intérprete de comandos para la aplicación efectiva de todas estas
herramientas. A este intérprete es posible acceder de varias formas:
 De modo interactivo a través de una consola.
 Lanzando un script (que podemos traducir como guión) que consiste
básicamente en un archivo en el que el usuario ha introducido todos
los comandos que desea ejecutar.
 A través de diversas interfaces gráficas de usuario (GUI).
1.1 Instalación de R y R‐Studio
Para la instalación del programa R y del paquete R-Commander, con su navegador
abra la página www.r-project.org. Marque el enlace Download R como se ilustra.
Figura Nº 1
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
7
Figura Nº 2
Una vez terminada la instalación del programa R, ejecútelo, el programa se abrirá
con una ventana como se muestra, esta ventana se conoce como la consola de R,
donde se tiene que escribir los comandos.
Figura Nº 3
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
8
1.2 Instalación de R Studio.
Hoy en día, la mejor plataforma para utilizar R (sobre todo para el principiante) es
RStudio1. RStudio es un IDE2 muy popular y que ofrece un entorno prácticamente
idéntico en todos los sistemas operativos para utilizar R.
RStudio, por defecto, tiene cuatro paneles. El panel inferior izquierdo es una
consola de R. En ella se puede escribir y ejecutar código. R muestra también en ella
los resultados obtenidos.
Figura Nº 4
2
Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un
depurador. La mayoría de los IDE tienen un autocompletado inteligente de código (IntelliSense). Algunos IDE
contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como
SharpDevelop y Lazarus. El límite entre un IDE y otras partes del entorno de desarrollo de software más
amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de
usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias herramientas.
Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de
jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
9
El panel superior izquierdo es un editor de código. Los ficheros que se abran y se
editen aparecerán en él dentro de sus correspondientes pestañas. Es imperativo
aprender a usar algunos de los atajos de teclado más comunes. Por ejemplo,
Control + R ejecuta la línea de código en la que se sitúa el cursor.
Los paneles de la derecha son menos importantes. El superior contiene un listado
de las variables en el entorno y un histórico de comandos ejecutados. El inferior
contiene varias pestañas; las que más se usan son:
 Files: da acceso al sistema de ficheros del disco duro
 Plots: aloja los gráficos que cree R
 Help: muestra la página de ayuda de las funciones cuando la solicite el
usuario
 Packages: Descarga e instalación de paquetes
2. Ventajas y desventajas de R (R Studio)
Entre las ventajas podemos mencionar:
 Es software libre y por tanto su coste es nulo y el número de paquetes, lo
que ha crecido en el último año a la nada despreciable velocidad de
aproximadamente 2 paquetes diarios.
 Es multiplataforma: existen versiones para Linux, Mac y Windows. Los
procedimientos y análisis desarrollados en una plataforma son
inmediatamente ejecutables en otra.
 Implementa una enorme cantidad de métodos estadísticos, desde los más
clásicos a los más modernos. Los métodos se organizan en librerías cuyo
número se encuentra en constante crecimiento.
 Dispone de una enorme capacidad para combinar, de manera simple,
métodos de análisis estándar (regresión, análisis de cluster, análisis de series
temporales) con análisis desarrollados ad hoc para una situación específica.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
10
 Capacidad para acceder a datos en múltiples formatos. Dispone de librerías
para leer datos desde SPSS, SAS, Access, MySQL, Excel,... Asimismo
permite también la generación de informes de resultados en diversos
formatos.
 Enorme capacidad para manipular y /o modificar datos y funciones.
 Generación de gráficos de alta calidad.
 Existencia de una comunidad de usuarios muy activa, en la que participan
estadísticos de renombre.
 Amplia disponibilidad de documentación, tanto en internet como en libros
publicados por editoriales de prestigio (Springer, Wiley).
 Facilidad de integración con actividades de formación en técnicas y métodos
estadísticos en todos los ámbitos del conocimiento. Su uso es cada vez más
generalizado en las universidades, lo que implica que las nuevas
generaciones de profesionales ya salen al mercado laboral con formación
específica en el manejo de este programa.
 En particular, su uso en la docencia tiene la ventaja de que no es necesario
que el estudiante adquiera licencias para su uso, por lo que cualquier
alumno puede instalar R en su ordenador personal y desarrollar tareas,
trabajos, etc. utilizando este programa. Asimismo, una vez que el estudiante
se gradúe y abandone la universidad, podrá seguir utilizando R en
cualquier ámbito profesional o de desarrollo.
 Existencia de extensiones específicas para nuevas áreas como
bioinformática, geo estadística, modelos gráficos o análisis de mercados
financieros3
.
3
La editorial Springer tiene una colección –UseR!– dedicada exclusivamente a R.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
11
Entre las desventajas podemos mencionar:
 Suele señalarse como principal desventaja de R el hecho de que el paquete
base no dispone de una interfaz amigable para el usuario; no existe un
menú principal en el que el usuario pueda acceder mediante el ratón a
submenús para la lectura de datos, la ejecución de procedimientos
estadísticos o la generación de gráficos. Estas tareas se llevan a cabo
mediante un lenguaje de comandos que puede resultar duro de aprender
para el usuario común. No obstante se han desarrollado algunas GUIs
(Graphical User Interfaces) que facilitan enormemente esta tarea. En
particular la interfaz R-Commander desarrollada por John M. Fox en la
McMaster University de Canadá presenta un menú para el acceso a los
comandos más habituales que, además, muestra el código que emplea R de
forma que permite al usuario familiarizarse con el lenguaje.
 El código R es interpretado, no compilado, por lo que algún algoritmo
puede resultar de ejecución lenta, en particular si se realizan tareas de
simulación intensiva. Esto no constituye mayor problema para un uso
ordinario del programa. En cualquier caso, a partir de la versión 2.14, todas
las funciones y librerías de R se encuentran precompiladas, lo que acelera su
ejecución de manera notable.
 No dispone de un sistema de base de datos propio, aunque sí cuenta con
un formato para el almacenamiento e intercambio de datos. En cualquier
caso se han desarrollado paquetes para conectar y acceder a múltiples
sistemas de bases de datos (las propias de SAS o SPSS, Access, dBase, Excel,
MySQL, etc ). Tiene algunas limitaciones en cuanto al uso de la memoria,
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
12
que dificultan el análisis de bases de datos masivas4
. No obstante estas
limitaciones han ido desapareciendo a medida que se han ido desarrollando
ordenadores con mayor capacidad (procesadores de 64 bits, más
disponibilidad de memoria y de direccionamiento de la misma). En
cualquier caso, salvo que el usuario deba acceder a millones de registros
simultáneamente, es difícil que llegue a notar problemas con la memoria.
 No dispone de un sistema de base de datos propio, aunque sí cuenta con un
formato para el almacenamiento e intercambio de datos. En cualquier caso
se han desarrollado paquetes para conectar y acceder a múltiples sistemas
de bases de datos (las propias de SAS o SPSS, Access, dBase, Excel, MySQL,
. . . ). Tiene algunas limitaciones en cuanto al uso de la memoria, que
dificultan el análisis de bases de datos masivas5. No obstante estas
limitaciones han ido desapareciendo a medida que se han ido desarrollando
ordenadores con mayor capacidad (procesadores de 64 bits, más
disponibilidad de memoria y de direccionamiento de la misma). En
cualquier caso, salvo que el usuario deba acceder a millones de registros
simultáneamente, es difícil que llegue a notar problemas con la memoria.
 En algún caso las nuevas librerías que se incorporan a R pueden tener
errores o fallos de implementación. Estos fallos, no obstante, suelen ser
detectados por los usuarios, informados a los desarrolladores de las librerías
y corregidos en tiempo récord. Debe señalarse, no obstante, que ningún
programa (incluso los comerciales) está exento de fallos y el proceso de
revisión y corrección de fallos en programas comerciales mediante parches
4
Ello se debe a que todos los datos con los que se trabaja deben permanecer simultáneamente en memoria. No obstante es
posible derivar parte de la carga de trabajo del procesamiento de datos al propio motor de la base de datos que se utiliza,
mediante comandos SQL.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
13
o actualizaciones suele ser notablemente más lento. Ello se debe a que todos
los datos con los que se trabaja deben permanecer simultáneamente en
memoria. No obstante es posible derivar parte de la carga de trabajo del
procesamiento de datos al propio motor de la base de datos que se utiliza,
mediante comandos SQL.
 A todos los puntos anteriores podemos añadir el siguiente, que será
considerado por unos una ventaja y por otros un inconveniente:
 Para hacer un buen uso de R se debe tener un buen conocimiento de los
métodos estadísticos. En realidad esta afirmación es cierta no sólo para R,
sino para cualquier paquete estadístico. Sin embargo en la práctica
programas como SPSS, Statistica o SYSTAT permiten, a través de sus
menús, que el usuario pueda aplicar casi cualquier procedimiento
estadístico –sea o no adecuado para sus datos o su problema– sin apenas
esfuerzo y obtenga páginas de resultados que muchas veces es incapaz de
interpretar. R es bastante más atento en sus salidas de resultados y, cuando
se han de aplicar modelos de cierta complejidad, la mayoría de las veces el
usuario se verá obligado a especificar exactamente qué es lo que quiere
hacer, lo que implica buen nivel de conocimiento de los problemas
abordados.
R posee muchas funciones para análisis estadísticos y gráficos; estos últimos
pueden ser visualizados de manera inmediata en su propia ventana y ser
guardados en varios formatos (jpg, png, bmp, ps, pdf, emf, pictex, xfig; los
formatos disponibles dependen del sistema operativo).
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
14
Los resultados de análisis estadísticos se muestran en la pantalla, y algunos
resultados intermedios (como valores P-, coeficientes de regresión, residuales,. . .)
se pueden guardar, exportar a un archivo, o ser utilizados en análisis posteriores.
El lenguaje R permite al usuario, por ejemplo, programar bucles (’loops’ en inglés)
para analizar conjuntos sucesivos de datos. También es posible combinar en un
solo programa diferentes funciones estadísticas para realizar análisis más
complejos. Usuarios de R tienen a su disponibilidad un gran número de programas
escritos para S y disponibles en la red;5
la mayoría de estos pueden ser utilizados
directamente con R.
Al principio, R puede parecer demasiado complejo para el usuario principiante.
Esto no es necesariamente cierto, porque una de las características más
sobresalientes de R es su enorme flexibilidad.
Mientras que programas más clásicos muestran directamente los resultados de un
análisis, R guarda estos resultados como un “objeto”, de tal manera que se puede
hacer un análisis sin necesidad de mostrar su resultado inmediatamente. Esto
puede ser un poco extraño para el usuario, pero esta característica suele ser muy
útil. De hecho, el usuario puede extraer solo aquella parte de los resultados que le
interesa. Por ejemplo, si uno corre una serie de 20 regresiones y quiere comparar
los coeficientes de regresión, R le puede mostrar únicamente los coeficientes
estimados: de esta manera los resultados se pueden resumir en una sola línea,
mientras que un programa clásico le puede abrir 20 ventanas de resultados. Más
adelante, veremos otros ejemplos que ilustran y comparan la flexibilidad de R con
programas de estadística más tradicionales ( Paradis, 2010).
5
Por ejemplo: http://stat.cmu.edu/S/
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
15
3. R como un sistema de ventanas
La forma más conveniente de usar R es en una estación de trabajo con un sistema
de ventanas. Estas notas están escritas pensando en usuarios de estas
características. En particular nos referiremos ocasionalmente a la utilización de R
en un sistema X-Windows, aunque normalmente se pueden aplicar a cualquier
implementación del entorno R.
3.1 Utilización interactiva de R
Cuando R espera la entrada de órdenes, presenta un símbolo para indicarlo. El
símbolo predeterminado es ‘>’, que en UNIX puede coincidir con el símbolo del
sistema, por lo que puede parecer que no sucede nada. Si ese es el caso es posible
modificar este símbolo en R.
3.2 Programas relacionados. Documentación
R puede definirse como una nueva implementación 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ásica 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ón de
agosto de 1991 de S están recogidas en Statistical Models in S editado por John M.
Chambers y Trevor J. Hastie. V´ease Apendice F [Referencias],
página 100, para referencias concretas.
1.3 Estadística con R
En la introducción 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écnicas
estadísticas, tanto clásicas como modernas. Algunas est´an incluidas en el entorno
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
16
base de R y otras se acompañan en forma de bibliotecas (packages). El hecho de
distinguir entre ambos conceptos es fundamentalmente una cuesti´on hist´orica.
Junto con R se incluyen ocho bibliotecas (llamadas bibliotecas est´andar) pero otras
muchas est´an disponibles a través de Internet en CRAN (http://www.r-
project.org).
Como hemos indicado, muchas técnicas estadísticas, desde las clásicas hasta la
última metodología, están disponibles en R, pero los usuarios necesitarán estar
dispuestos a trabajar un poco para poder encontrarlas.
Existe una diferencia fundamental en la filosofía que subyace en R (o S) y la de
otros sistemas estadísticos. En R, un análisis estadístico se realiza en una serie de
pasos, con unos resultados intermedios que se van almacenando en objetos, para
ser observados o analizados posteriormente, produciendo unas salidas mínimas.
4. Objetos – Tipos (Vector, Array, Matriz, Factor, Serie temporal, Lista, Data
frame)
4.1 Objetos
En términos genéricos, todos los elementos que maneja R son objetos: un valor
numérico es un objeto, un vector es un objeto, una función es un objeto, una base
de datos es un objeto, un gráfico es un objeto, etc. Para realizar un uso eficiente de
R es preciso entender y aprender a manipular bien las distintas clases de objetos
que maneja el programa. En esta sección nos vamos a ocupar particularmente de
aquellos objetos que R utiliza para representar datos: valores, vectores,
matrices, dataframes, series temporales y listas.
R utiliza la programación orientada a objetos. Ello significa que una misma
función hace cosas distintas según la clase del objeto que recibe como argumento,
pudiendo incluso no hacer nada (o producir un error) si se le pasan argumentos de
una clase inadecuada (González & González, 2000).
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
17
4.1.1 Vectores
La función vector, que tiene dos argumentos mode y length, crea un vector cuyos
elementos pueden ser de tipo numérico, lógico o carácter dependiendo del
argumento especificado en mode (0, FALSE o “ ” respectivamente).
Uso
vector(mode = "logical", length = 0)
Ejemplo:
v <- vector("integer", 0)
v # Un vector de enteros sin elementos
## integer(0)
w <- vector("numeric", 3)
w # Un vector de tres ceros
## [1] 0 0 0
u <- vector("logical", 5)
u # Un vector de 5 FALSE
## [1] FALSE FALSE FALSE FALSE FALSE
Las siguientes funciones tienen exactamente el mismo efecto y tienen un solo
argumento (la longitud del vector): numeric(), logical(), y character(). El primer
tipo de objeto que manejaremos es el vector (colección ordenada de elementos del
mismo tipo).
Podemos escribir vectores de varias maneras, utilizando la opción “:” (el vector
comienza en el primer número suministrado y analiza en el segundo o en un
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
18
numero anterior sin sobrepasarlo, tanto en orden ascendente como descendente)
con mediante la función de concatenación “c( )".
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
10:1
[1] 10 9 8 7 6 5 4 3 2 1
Tenemos, además, formas adicionales de crear vectores. Una de las más comunes
es utilizando la función “seq(a, b, c)”, que genera secuencias de números reales,
donde el primer elemento indicaría el principio de la secuencia, el segundo el final
y el tercero el incremento que se debe usar para generar la secuencia. Aunque
también podemos poner la función de estas formas “seq (length = d, from = a, to =
b)” o “seq(by = c, f rom = a, to = b)” siendo “d” la longitud del vector.
Ejemplo:
seq(10) #mismo efecto que 1:10
seq(3,10) #mismo efecto que 3:10
seq(1,10, by=3) #saltando de 3 en 3
rep(1:4,2) #Vectores Constructores (repetimos 1:4 dos veces).
rep(1:4,each=2) #repetimos 1:4 dos veces, #intercalando el resultado.
Acceso a datos:
datos #vector completo
datos [1] #primer dato
datos [-4] #todo menos el cuarto dato
datos [c(1,3,5)] #posiciones 1, 3 y 5
datos [3:5] #posiciones 3 a 5
v <- datos>1 #vector lógico con true en la posición i sii datos[i]>1
datos[v] #posiciones con true en el vector v
o De manera análoga, podemos modificar los datos:
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
19
datos[1] <- 23
Asimismo la función vector tiene otras funciones complementarias con las cuales
también se puede trabajar:
as.vector: Es una función una genérica e intenta coaccionar su argumento en un
vector del modo modo (el predeterminado es coaccionar a cualquier modo
vectorial más conveniente): si el resultado es atómico todos los atributos se
eliminan.
is.vector: Es una función una genérica y devuelve TRUE si x es un vector del
modo especificado que no tiene atributos que no sean nombres. De lo contrario
devuelve FALSE.
4.1.2 Generación de Niveles
La función “gl( )” (generador de niveles) genera series regulares de factores. Tiene
la forma “gl(a, b)” donde “a” es el número de niveles (o clases) y “b” es el número
de réplicas en cada nivel. Se pueden usar dos opciones: “length” para especificar el
número de datos producidos, y “labels” para especificar los nombres de los
factores.
# Repetimos los dos niveles 6 veces con la etiqueta Hombre y Mujer
> gl(2, 6, labels = c("Hombre", "Mujer"))
Finalmente, “expand.grid( )” crea una tabla de datos con todas las combinaciones
posibles de los elementos de los vectores o factores que proporcionemos como
argumentos.
> grid(edad=c(36,25), peso=c(75,60), sexo=c("Hombre","Mujer"))
# Crea todas las combinaciones posibles
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
20
R puede escribir vectores con caracteres o números, pero siempre entiende los
elementos como si fuesen del mismo tipo.
Un vector siempre está formado por elementos del mismo tipo, no pueden
mezclarse números y cadenas de caracteres (se transformaría en cadenas de
caracteres). Del mismo modo, si mezcla números reales y complejos, se
entenderían como complejos.
c("Hola", "Adios")
c(1, 1+2i)
c(1-1i, 2)
dias.semana=c("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo
") > dias.semana
Una opción de R es que podemos asignar nombres a los elementos de un vector
mediante la función “names” (también se podría utilizar para nombrar cualquier
objeto).
x < - 1:7
names(x)< c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
x
Lunes Martes Miercoles Jueves Viernes Sabado Domingo
1 2 3 4 5 6 7
También podemos conocer o cambiar el modo o tipo de los elementos que forman
el vector mediante la función “mode” (tomaría los valores: logical, numeric,
complex, character, null, list, function, graphics, expression, name, frame, raw y
unknown).
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
21
4.1.3 Factores
Un factor es un vector de cadenas de caracteres que sirve para representar datos
categóricos, aunque no solo incluye estos valores sino que también los diferentes
niveles posibles de esta variable. La función “factor” se utiliza para codificar un
vector como un factor. Creando tantos niveles como le indiquemos.
Conceptualmente, los factores son variables en R que toman un número limitado
de valores diferentes; tales variables se refieren a menudo como variables
categóricas. Uno de los usos más importantes de los factores es el modelado
estadístico; dado que las variables categóricas entran en modelos estadísticos de
forma diferente a las variables continuas, el almacenamiento de datos como
factores asegura que las funciones de modelado traten dichos datos correctamente.
Los factores en R se almacenan como un vector de valores enteros con un conjunto
correspondiente de valores de caracteres que se utilizarán cuando se muestre el
factor.
La función factor se utiliza para crear un factor. El único argumento requerido
para factor es un vector de valores que será devuelto como un vector de valores de
factor. Las variables numéricas y de carácter se pueden convertir en factores, pero
los niveles de un factor siempre serán valores de carácter. Puedes ver los niveles
posibles para un factor a través del comando levels.
Para cambiar el orden en el que se mostrarán los niveles de su orden ordenado por
defecto, el argumento “levels =” puede recibir un vector de todos los valores
posibles de la variable en el orden que desee. Si el pedido también debe utilizarse
al realizar comparaciones, utilice el argumento opcional ordenado =
VERDADERO. En este caso, el factor se conoce como un factor ordenado.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
22
Los niveles de un factor se utilizan cuando se muestran los valores del factor. Se
puede cambiar estos niveles en el momento en que crea un factor pasando un
vector con los nuevos valores a través del argumento labels =. Tenga en cuenta que
esto realmente cambia los niveles internos del factor y para cambiar las etiquetas
de un factor después de que se ha creado, se utiliza la forma de asignación de la
función de niveles. Para ilustrar este punto, considere un factor tomando valores
enteros que queremos mostrar como números romanos.
# Tres niveles
> factor(1:3)
[1] 1 2 3
Levels: 1 2 3
El atributo “levels” indica los valores numéricos posibles (es decir los caracteres
diferentes que aparecen en el vector). Se utiliza, por ejemplo, para dividir una
población en grupos.
La función “factor” se utiliza para codificar un vector como un factor. Creando
tantos niveles como le indiquemos.
# Cinco niveles
> factor(1:3, levels=1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
# Un vector de dos elementos con cuatro niveles
aa<-factor(c(2,3),levels=2:5)
> aa
[1] 2 3
Levels: 2 3 4 5
levels(aa)
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
23
> levels(aa)
[1] "2" "3" "4" "5"
factor(c("Mujer","Mujer","Hombre"))
[1] Mujer Mujer Hombre
Levels: Hombre Mujer
Con la opción “exclude”, por ejemplo “factor(1 : 5, exclude = 4)” excluimos los
valores de los niveles que necesitemos y con “ordered” especificamos si los niveles
del factor están ordenados.
# Cinco niveles excluyendo el cuarto
factor(1:5, exclude=4)
[1] 1 2 3 <NA> 5
Levels: 1 2 3 5
Un error muy común es utilizar variables aparentemente numéricas en análisis
estadísticos, por ejemplo números telefónicos o códigos postales. Por ello antes de
utilizar un vector con caracteres cualitativos o cuantitativos dentro de un análisis,
hace falta convertirlo en un factor.
> data = c(1,2,2,3,1,2,3,3,1,2,3,3,1)
> fdata = factor(data)
> fdata
[1] 1 2 2 3 1 2 3 3 1 2 3 3 1
Levels: 1 2 3
> rdata = factor(data,labels=c("I","II","III"))
> rdata
[1] I II II III I II III III I II III III I
Levels: I II III
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
24
Para convertir el factor predeterminado fdata a números romanos, usamos la
forma de asignación de la función levels:
> levels(fdata) = c('I','II','III')
> fdata
[1] I II II III I II III III I II III III I
Levels: I II III
Como ejemplo de un factor ordenado, considere los datos que consisten en los
nombres de meses:
> mons=c("March","April","January","November","January", "September",
"October","September","November","August","January","November",
"November","February","May","August","July","December","August",
"August","September","November", "February","April")
> mons = factor(mons)
> table(mons)
mons
April August December February January July
2 4 1 2 3 1
March May November October September
1 1 5 1 3
Aunque los meses claramente tienen una ordenación, esto no se refleja en la salida
de la función de tabla. Además, los operadores de comparación no son compatibles
con factores no ordenados. La creación de un factor ordenado resuelve estos
problemas:
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
25
> mons = factor(mons,levels=c("January","February","March", "April", "May",
"June","July","August","September", "October", "November" ,"December"),
ordered=TRUE)
Si digitamos en el siguiente comando tenemos
mons[1] < mons[2]
[1] TRUE
table(mons)
mons
January February March April May June
3 2 1 2 1 0
July August September October November December
1 4 3 1 5 1
> fert = c(10,20,20,50,10,20,10,50,20)
> fert = factor(fert,levels=c(10,20,50),ordered=TRUE)
> fert
[1] 10 20 20 50 10 20 10 50 20
Levels: 10 < 20 < 50
Si queremos calcular la media de los valores numéricos originales de la variable fert,
tendríamos que convertir los valores usando la función levels:
> mean(fert)
[1] NA
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
26
Warning message:
argument is not numeric or logical:
returning NA in: mean.default(fert)
> mean(as.numeric(levels(fert)[fert]))
[1] 23.33333
4.1.3 Indexación de Factores
La indexación del valor devuelto de la función levels es la forma más confiable
para convertir los factores numéricos a sus valores numéricos originales. Cuando
se crea primero un factor, todos sus niveles se almacenan junto con el factor y si se
extraen subconjuntos del factor, se conservarán todos los niveles originales. Esto
puede crear problemas al construir matrices de modelos y puede o no ser útil al
mostrar los datos usando, digamos, la función de tabla. Como ejemplo, considere
una muestra aleatoria del vector de letras, que es parte de la distribución de base R.
> lets = sample(letters,size=100,replace=TRUE)
> lets = factor(lets)
> table(lets[1:5])
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1
A pesar de que sólo cinco de los niveles realmente se representan, la función de
tabla muestra las frecuencias para todos los niveles de los factores originales. Para
cambiar esto, podemos simplemente usar otra llamada para factor
> table(factor(lets[1:5]))
a k q s z
1 1 1 1 1
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
27
Para excluir ciertos niveles de aparecer en un factor, el argumento excluir = se
puede pasar al factor. Por defecto, el valor faltante (NA) se excluye de los niveles
de factor; para crear un factor que incluya valores perdidos de una variable
numérica, use exclude = NULL.
Se debe tener cuidado al combinar variables que son factores, porque la función c
interpretará los factores como enteros. Para combinar los factores, primero deben
ser convertidos de nuevo a sus valores originales (a través de la función de los
niveles), luego catenated y convertido a un nuevo factor:
> l1 = factor(sample(letters,size=10,replace=TRUE))
> l2 = factor(sample(letters,size=10,replace=TRUE))
> l1
[1] o b i v q n q w e z
Levels: b e i n o q v w z
> l2
[1] b a s b l r g m z o
Levels: a b g l m o r s z
> l12 = factor(c(levels(l1)[l1],levels(l2)[l2]))
> l12
[1] o b i v q n q w e z b a s b l r g m z o
Levels: a b e g i l m n o q r s v w z
Existen funciones que nos permiten convertir diferentes clases de objetos a modos
diferentes. Una situación frecuente es la conversión de factores a valores
numéricos. En este caso, R realiza la conversión usando las expresiones
“as.numeric” y “as.character”. Para realizar la conversión manteniendo los valores
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
28
literales del factor, primero se debe convertir a carácter y después a numérico. Este
procedimiento puede ser bastante útil si en un archivo una variable numérica
también tiene valores no-numéricos.
> c.p<-c(18002,18194,18199)
> c.p
[1] 18002 18194 18199
> mode(c.p)
[1] "numeric"
> codigo.postal<-factor(c.p)
> codigo.postal
[1] 18002 18194 18199
Levels: 18002 18194 18199
> c.p<-c(18002,18194,18199)
> c.p
[1] 18002 18194 18199
> mode(c.p)
[1] "numeric"
> codigo.postal<-factor(c.p)
> codigo.postal
[1] 18002 18194 18199
Levels: 18002 18194 18199
> f<-factor(c(1,3))
> as.numeric(f)
[1] 1 2
> # Para guardarlos primero lo convertimos en carácter y luego en numerico
> as.numeric(as.character(f))
[1] 1 3
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
29
4.1.4 Listas
Una lista se construye con la función list que devuelve un objeto de tipo lista con
tantos componentes como argumentos se le suministren y es utilizado para
devolver el resultado de una función.
Una lista se crea de manera similar a un marco de datos con la función list. No
existe ninguna limitación en el tipo de objetos que se pueden incluir. A diferencia
de data.frame(), los nombres de los objetos no se toman por defecto; tomando los
vectores x y y del ejemplo anterior:
> dias.semana
[1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo"
> list(A=dias.semana,B=1:7)
>A
[1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo"
> B
[1] 1 2 3 4 5 6 7
Puede referirse a cada uno de los elementos de la lista de dos formas distintas: Si
tiene nombre, como en este caso, mediante el nombre de la lista, el símbolo $ y el
nombre del elemento. En cualquier caso, siempre puede referirse a él mediante el
índice de posición entre dobles corchetes.
> list(A=dias.semana,B=1:7)$A
[1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo"
> list(A=dias.semana,B=1:7)$B
[1] 1 2 3 4 5 6 7
La diferencia fundamental entre las tres formas, [, [[ y $ es que la primera permite
seleccionar varios elementos, en tanto que las dos últimas solo permiten
seleccionar uno. Además, $ no permite utilizar índices calculados. El operador
[[necesita que se le indiquen todos los índices (ya que debe seleccionar un sólo
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
30
elemento) en tanto que [permite obviar índices, en cuyo caso se seleccionan todos
los valores posibles. Si se aplican a una lista, [[devuelve el elemento de la lista
especificado y [devuelve una lista con los elementos especificados.
5. Operaciones con Matrices
Las matrices o variables indexadas (Arrays) son generalizaciones
multidimensionales de vectores. De hecho, son vectores indexados por dos o m´as
indices y que se imprimen de modo especial. Para crearlas utilizamos la funci´on
“matrix”.
Los parámetros principales de esta función son: data (vector que contiene los
valores que formarán la matriz), nrow (número de filas), ncol (número de
columnas).
> # Tenemos que tener en cuenta el tama~no de la matriz
> m2<-matrix(1:4,3)
Warning message:
In matrix(1:4, 3) :
La longitud de los datos [4] no es un submúltiplo o múltiplo del número de filas [3]
en la matriz
> # la longitud de los datos [4] no es un subm´ultiplo o m´ultiplo del n´umero de
filas [3] en la matriz
> m2<-matrix(1:4,2)
> m2
[,1] [,2]
[1,] 1 3
[2,] 2 4
> m2<-matrix(1:8,4)
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
31
> m2
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
# Hemos formado una matriz con el vector 1:8 de cuatro filas
m3<-matrix(1:8,ncol=4)
m3
> m3<-matrix(1:8,ncol=4)
> m3
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
# Hemos formado una matriz con el vector 1:8 de cuatro columnas
Si quiere dar nombres a las columnas (o a las filas) puedes hacerlo asignando
valores al parámetro “dim-names”, lista con los nombres de las filas y las
columnas. Las componentes de la lista deben tener longitud o ser un vector de
cadenas de caracteres con la misma longitud que la dimensión de la matriz.
# Renombramos las columnas
matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3")))
> matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3")))
A1 A2 A3
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
32
> # Renombramos las filas
> matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c()))
[,1] [,2] [,3]
a1 1 4 7
a2 2 5 8
a3 3 6 9
# Renombramos filas y columnas
matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c("A1","A2","A3")))
A1 A2 A3
a1 1 4 7
a2 2 5 8
a3 3 6 9
Una operación muy común es hacer referencia a una submatriz o a un elemento de
la matriz, se realiza indicando los índices de los elementos a los que se hace
referencia. Podemos hacer referencia a una fila (vector) mediante matriz [i, ], con i
el índice de la fila que queremos mostrar, o a una columna mediante matriz[ , j] con
j el índice de la columna que queremos mostrar. Si lo que queremos es un elemento
concreto indicamos los dos índices matriz[i, j], por ejemplo con matriz [2, 1], que da
el valor 2º de la 1a variable que coincide con el 1o valor de la 2a variable. Un
argumento útil en estas operaciones es la variable lógica “byrow” que indica si la
matriz debe construirse por filas o por columnas (el valor predeterminado es F).
> # Introducimos los datos, peso, altura, edad.
> datos<-c(70,108,82,1.80,2.06,1.98,27,19,32)
> mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T)
> # Con byrow=T le hemos dicho que lea primero por filas
> mm
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
33
> datos<-c(70,108,82,1.80,2.06,1.98,27,19,32)
> mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T)
> mm
[,1] [,2] [,3]
Peso 70.0 108.00 82.00
Altura 1.8 2.06 1.98
Edad 27.0 19.00 32.00
> mm
[,1] [,2] [,3]
Peso 70.0 108.00 82.00
Altura 1.8 2.06 1.98
Edad 27.0 19.00 32.00
> mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=F)
> # Con byrow=F le hemos dicho que lea primero por columnas, con lo que no se
muestra correctamente
> mm
[,1] [,2] [,3]
Peso 70 1.80 27
Altura 108 2.06 19
Edad 82 1.98 32
Podemos realizar operaciones con matrices de la misma forma que lo hacíamos con
los vectores, es decir componente a componente: suma, resta, multiplicación por
escalares, multiplicación elemento a elemento, división elemento a elemento,
exponenciación, división entera y módulo, que se realizan mediante los símbolos:
+, - , *, /, ˆ, % / % y % %.
> M1
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
34
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> M2<-matrix((1:6)^2,2,3)
> M2
[,1] [,2] [,3]
[1,] 1 9 25
[2,] 4 16 36
> M1+M2
[,1] [,2] [,3]
[1,] 2 12 30
[2,] 6 20 42
Aunque en principio no están relacionadas las matrices con las tablas de
frecuencias a partir de factores, podemos utilizar las primeras para expresar las
segundas. Hemos visto que un factor define una tabla de entrada simple. Del
mismo modo, dos factores definen una tabla de doble entrada, y así sucesivamente.
La función “table( )” calcula tablas de frecuencias a partir de factores de igual
longitud. Si existen k argumentos categóricos, el resultado será una variable k-
indexada, que contiene la tabla de frecuencias.
a=c(1,3,2)
b=1.3
b=1:3
table(a,b)
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
35
6. Arrays (Variable Multiindexada)
La generalización de los vectores y matrices son las variables multiindexadas,
denominadas arrays, y de las cuales son casos particulares los vectores y matrices.
Una variable indexada (array) es una colección de datos, por ejemplo numéricos,
indexados por varios índices. R permite crear y manipular variables indexadas, por
ejemplo para crear una variable multiindexada se utiliza la función “array (data,
dim, dimnames)” donde “dim” es un vector de dimensiones. Además podemos
hacer referencia a cualquier subconjunto de la misma, de modo similar a las
matrices.
Bibliografía
Paradis, E. (2010). R para principiantes. Universit Montpellier II. París: Institut des Sciences de
l’E´volution.
González, A., & González, S. (2000). Introdución al R. Notas sobre R: Un entorno de programación
para Análisis de Datos y Gráficos. cran.r-project.org.
Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM
Introducción al R y al R- Studio
Bustamante Romaní, Rafael.
36

Más contenido relacionado

Similar a Apuntes de clase de r

Trabajo de pseint, alvarez, 10 1
Trabajo de pseint, alvarez, 10 1Trabajo de pseint, alvarez, 10 1
Trabajo de pseint, alvarez, 10 1MARIA PAZ CARDONA
 
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdf
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdfInforme Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdf
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdfJosueVasquez51
 
Unidad 2 programa estadistico
Unidad 2 programa estadisticoUnidad 2 programa estadistico
Unidad 2 programa estadisticoLizbeth Chavez
 
ippython 2024 completo Andrés Marzal y Isabel gracia
ippython 2024 completo Andrés Marzal y Isabel graciaippython 2024 completo Andrés Marzal y Isabel gracia
ippython 2024 completo Andrés Marzal y Isabel graciaMauro Alexis Chaves
 
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdf
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdfESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdf
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdfjuanisvelez2
 
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdfESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdfMariannaGutierrezGom
 
Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.ValentinaGarcia89
 
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdfESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdfMariannaGutierrezGom
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfStebanSanchez2
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfsantiagoalzate25
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfSergioAndresAlvarezV
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfnicolasacosta53
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfnicolasacosta53
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdfVALERIAPORTILLAR
 
estructuras básicas.docx
estructuras básicas.docxestructuras básicas.docx
estructuras básicas.docxSofiaA30
 

Similar a Apuntes de clase de r (20)

Apuntes de clase matlab.abril2019
Apuntes de clase  matlab.abril2019Apuntes de clase  matlab.abril2019
Apuntes de clase matlab.abril2019
 
Trabajo de pseint, alvarez, 10 1
Trabajo de pseint, alvarez, 10 1Trabajo de pseint, alvarez, 10 1
Trabajo de pseint, alvarez, 10 1
 
Trabajo de pseint, 10 1
Trabajo de pseint, 10 1 Trabajo de pseint, 10 1
Trabajo de pseint, 10 1
 
Oa
OaOa
Oa
 
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdf
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdfInforme Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdf
Informe Tecnologia Periodo 2 Josue Paredes Vasquez 10-5.pdf
 
Unidad 2 programa estadistico
Unidad 2 programa estadisticoUnidad 2 programa estadistico
Unidad 2 programa estadistico
 
Psp analisis de sistemas
Psp   analisis de sistemasPsp   analisis de sistemas
Psp analisis de sistemas
 
ippython 2024 completo Andrés Marzal y Isabel gracia
ippython 2024 completo Andrés Marzal y Isabel graciaippython 2024 completo Andrés Marzal y Isabel gracia
ippython 2024 completo Andrés Marzal y Isabel gracia
 
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdf
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdfESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdf
ESTRUCTURAS BÁSICAS- CONCEPTOS BÁSICOS DE PROGRAMACIÓN-1.pdf
 
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdfESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN (1).pdf
 
Tecnología PseInt
Tecnología PseIntTecnología PseInt
Tecnología PseInt
 
Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.
 
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdfESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdf
ESTRUCTURAS BÁSICAS_ CONCEPTOS BÁSICOS DE PROGRAMACIÓN.pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
Taller Tecnologia 11-1 PERIODO 1 ..pdf
Taller Tecnologia 11-1  PERIODO 1 ..pdfTaller Tecnologia 11-1  PERIODO 1 ..pdf
Taller Tecnologia 11-1 PERIODO 1 ..pdf
 
estructuras básicas.docx
estructuras básicas.docxestructuras básicas.docx
estructuras básicas.docx
 

Último

Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfJC Díaz Herrera
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalMarcosAlvarezSalinas
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfJC Díaz Herrera
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaJoellyAlejandraRodrg
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfJC Díaz Herrera
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciaferg6120
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfalexanderleonyonange
 
Países por velocidad de sus misiles hipersónicos (2024).pdf
Países por velocidad de sus misiles hipersónicos  (2024).pdfPaíses por velocidad de sus misiles hipersónicos  (2024).pdf
Países por velocidad de sus misiles hipersónicos (2024).pdfJC Díaz Herrera
 
PANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaPANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaRosaHurtado26
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfDodiAcuaArstica
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxLuisAngelYomonaYomon
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticJamithGarcia1
 
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdf
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdfCALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdf
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdfPOULANDERSONDELGADOA2
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfJC Díaz Herrera
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdfJC Díaz Herrera
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
Tendencias en la Gestión del Talento Humano.pdf
Tendencias en la Gestión del Talento Humano.pdfTendencias en la Gestión del Talento Humano.pdf
Tendencias en la Gestión del Talento Humano.pdfdanaeamadot
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosMarycarmenNuez4
 

Último (20)

Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescencia
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
Países por velocidad de sus misiles hipersónicos (2024).pdf
Países por velocidad de sus misiles hipersónicos  (2024).pdfPaíses por velocidad de sus misiles hipersónicos  (2024).pdf
Países por velocidad de sus misiles hipersónicos (2024).pdf
 
PANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaPANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitectura
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdf
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdfCALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdf
CALENDARIZACIÓN ACTUALIZADA DEL 2024 alt.pdf
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
Tendencias en la Gestión del Talento Humano.pdf
Tendencias en la Gestión del Talento Humano.pdfTendencias en la Gestión del Talento Humano.pdf
Tendencias en la Gestión del Talento Humano.pdf
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicos
 

Apuntes de clase de r

  • 1. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 1 (Versión preliminar) Rafael, Bustamante Romaní N° 17 Octubre de 2017 Serie Apuntes de Clase ΩΒΓ UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS Universidad del Perú, DECANA DE AMÉRICA FACULTAD DE CIENCIAS ECONÓMICAS
  • 2. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 2 La Serie Apuntes de Clase Omega Beta Gamma tiene por objetivo difundir los materiales de enseñanza generados por los docentes que tienen a su cargo el desarrollo de las asignaturas que forman parte de los Planes de Estudios de las Escuelas Académico-Profesionales de la Facultad de Ciencias Económicas de la Universidad Nacional Mayor de San Marcos. Estos documentos buscan proporcionar a los estudiantes la explicación de algunos temas específicos que son abordados en su formación universitaria. Encargados de la serie: Bustamante Romaní, Rafael. Cisneros García, Juan Manuel. rbustamanter@unmsm.edu.pe jcisnerosg@unmsm.edu.pe Facultad de Ciencias Económicas. Universidad Nacional Mayor de San Marcos. Calle Germán Amézaga N° 375. Ciudad Universitaria, Lima 1. Perú. La Serie Apuntes de Clase ΩΒΓ es promovida y desarrollada por un colectivo de docentes del Departamento de Economía de la Universidad Nacional Mayor de San Marcos. El contenido de cada publicación es íntegramente responsabilidad de cada autor, no representa necesariamente los puntos de vista de los integrantes del colectivo, ni de la Universidad. Financeybusinness S.A.C. Es una firma especializada en la prestación de servicios profesionales en capacitación y de consultoría en el diseño e implementación de estrategias empresariales ante los problemas financieros, de gestión y riesgos a los que se enfrentan las empresas en su normal funcionamiento. http://financeybusiness.com
  • 3. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 3 INTRODUCIÓN AL R Y AL R- STUDIO . Rafael Bustamante Romaní Resumen R es un programa es ampliamente conocido como un lenguaje de programación y un entorno para análisis estadístico y la realización de gráficos de gran calidad. Contiene un entorno de computación viable para la implementación y la aplicación de métodos numéricos de manera sencilla y efectiva. Aunque R permite varios estilos de programación, en la medida de lo posible, se usa un estilo orientado a la "programación de arreglos" (llamado "vectorización"). Como R es interpretado, se incluye una sección mínima sobre cómo acelerar R usando "vectorización", o usando el paquete Rcpp para conectar R con C++ y también paralelización. El objetivo de estos apuntes de clase es proporcionar las nociones básicas para personas interesadas en comenzar a utilizar el R. Poniendo énfasis en el funcionamiento de R, con el objeto de que se pueda usar de una manera básica. Dado que R ofrece una amplia gama de posibilidades, es útil para el principiante adquirir algunas nociones y conceptos y así progresar gradualmente. Se busca simplificar las explicaciones al máximo para hacerlas lo más comprensivas posibles, pero al mismo tiempo proporcionando detalles útiles, algunas veces con la ayuda de tablas. Palabras claves: Método numéricos, lenguaje R, álgebra lineal, ecuaciones no lineales, integración, ecuaciones diferenciales Clasificación JEL: C00, C02.  Estudios de Doctorado en Economía, Universidad Autónoma de México. Maestría en Economía con mención en Finanzas, MBA Centrum Pontificia Universidad Católica del Perú. B. Sc. Economía, Universidad Nacional Mayor de San Marcos. Profesor del Departamento de Economía de UNMSM. Investigador asociado al Instituto de Investigaciones FCE – UNMSM. Investiga. Contacto: rafael.bustamanter@unmsm.edu.pe .
  • 4. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 4 Contenido 1. Introducción al entorno R ............................................................................................................... 5 2. Ventajas y desventajas de R.......................................................................................................... 9 3. R como un sistema de ventanas................................................................................................... 15 3.1 Utilización interactiva de R...................................................................................................... 15 3.2 Programas relacionados. Documentación .............................................................................. 15 4. Objetos – Tipos (Vector, Array, Matriz, Factor, Serie temporal, Lista, Data frame) ..................... 16 4.1 Objetos.................................................................................................................................... 16 4.1.1 Vectores ........................................................................................................................... 17 4.1.2 Generación de Niveles ..................................................................................................... 19 4.1.3 Factores............................................................................................................................ 21 4.1.3 Indexación de Factores..................................................................................................... 26 4.1.4 Listas................................................................................................................................ 29 5. Operaciones con Matrices............................................................................................................. 30 6. Arrays (Variable Multiindexada) ................................................................................................... 35 Bibliografía ........................................................................................................................................ 35
  • 5. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 5 1. Introducción al entorno R El programa R puede entenderse como un lenguaje de programación, como un potente software de análisis estadísticos o incluso como un generador de gráficos. Cualquiera de los tres significados es compatible con una definición del R. Estos apuntes de ofrecen al lector interesado en programación, los conceptos básicos y necesarios de la sintaxis de R que le permitirán trabajar en un entorno para su uso con interfaces de códigos1 . Si bien es cierto que existen interfaces gráficas (R Commander) que facilitan el uso de R como software para el análisis de datos, no es menos cierto que la adquisición de destrezas en el manejo de unas normas de sintaxis básicas permitirán al usuario de R beneficiarse aún más de la potencia y de las ventajas que ofrece este entorno (Elousa, 2010). Podemos definir R como un entorno en el que se aplican los métodos estadísticos de análisis de datos. En este entorno, tal como se indica en la web del programa, www.r-project.org, podemos encontrar los siguientes componentes:  Herramientas de lectura, importación, gestión y almacenamiento de datos.  Funciones y operadores diseñados para actuar directamente sobre vectores o matrices.  Una gran colección, coherente e integrada, de herramientas para el análisis de datos. 1 Interfaz es lo que conocemos en inglés como interface (“superficie de contacto”). En informática, se utiliza para nombrar a la conexión funcional entre dos sistemas, programas, dispositivos o componentes de cualquier tipo, que proporciona una comunicación de distintos niveles permitiendo el intercambio de información. Su plural es interfaces. Ejemplos de interfaces en informática son las interfaces de usuario (entre computadora y persona) como sería una pantalla o un ratón (si hablamos de hardware) o la ventana gráfica de un programa con la que interactuamos (si hablamos de software); las interfaces físicas (entre dos dispositivos) como el SCSI o el USB; o las interfaces lógicas (entre dos programas) como la API o el DOM.
  • 6. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 6  Procedimientos gráficos para el análisis y visualización de datos, ya sea en pantalla o en papel.  Un completo y bien desarrollado lenguaje de programación, simple y eficiente, que incluye gran cantidad de funciones predefinidas, instrucciones condicionales, bucles, posibilidad de definir funciones recursivas y procedimientos avanzados de entrada y salida, con la posibilidad de importar o exportar datos a un gran número de aplicaciones.  Un intérprete de comandos para la aplicación efectiva de todas estas herramientas. A este intérprete es posible acceder de varias formas:  De modo interactivo a través de una consola.  Lanzando un script (que podemos traducir como guión) que consiste básicamente en un archivo en el que el usuario ha introducido todos los comandos que desea ejecutar.  A través de diversas interfaces gráficas de usuario (GUI). 1.1 Instalación de R y R‐Studio Para la instalación del programa R y del paquete R-Commander, con su navegador abra la página www.r-project.org. Marque el enlace Download R como se ilustra. Figura Nº 1
  • 7. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 7 Figura Nº 2 Una vez terminada la instalación del programa R, ejecútelo, el programa se abrirá con una ventana como se muestra, esta ventana se conoce como la consola de R, donde se tiene que escribir los comandos. Figura Nº 3
  • 8. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 8 1.2 Instalación de R Studio. Hoy en día, la mejor plataforma para utilizar R (sobre todo para el principiante) es RStudio1. RStudio es un IDE2 muy popular y que ofrece un entorno prácticamente idéntico en todos los sistemas operativos para utilizar R. RStudio, por defecto, tiene cuatro paneles. El panel inferior izquierdo es una consola de R. En ella se puede escribir y ejecutar código. R muestra también en ella los resultados obtenidos. Figura Nº 4 2 Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDE tienen un autocompletado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un IDE y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.
  • 9. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 9 El panel superior izquierdo es un editor de código. Los ficheros que se abran y se editen aparecerán en él dentro de sus correspondientes pestañas. Es imperativo aprender a usar algunos de los atajos de teclado más comunes. Por ejemplo, Control + R ejecuta la línea de código en la que se sitúa el cursor. Los paneles de la derecha son menos importantes. El superior contiene un listado de las variables en el entorno y un histórico de comandos ejecutados. El inferior contiene varias pestañas; las que más se usan son:  Files: da acceso al sistema de ficheros del disco duro  Plots: aloja los gráficos que cree R  Help: muestra la página de ayuda de las funciones cuando la solicite el usuario  Packages: Descarga e instalación de paquetes 2. Ventajas y desventajas de R (R Studio) Entre las ventajas podemos mencionar:  Es software libre y por tanto su coste es nulo y el número de paquetes, lo que ha crecido en el último año a la nada despreciable velocidad de aproximadamente 2 paquetes diarios.  Es multiplataforma: existen versiones para Linux, Mac y Windows. Los procedimientos y análisis desarrollados en una plataforma son inmediatamente ejecutables en otra.  Implementa una enorme cantidad de métodos estadísticos, desde los más clásicos a los más modernos. Los métodos se organizan en librerías cuyo número se encuentra en constante crecimiento.  Dispone de una enorme capacidad para combinar, de manera simple, métodos de análisis estándar (regresión, análisis de cluster, análisis de series temporales) con análisis desarrollados ad hoc para una situación específica.
  • 10. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 10  Capacidad para acceder a datos en múltiples formatos. Dispone de librerías para leer datos desde SPSS, SAS, Access, MySQL, Excel,... Asimismo permite también la generación de informes de resultados en diversos formatos.  Enorme capacidad para manipular y /o modificar datos y funciones.  Generación de gráficos de alta calidad.  Existencia de una comunidad de usuarios muy activa, en la que participan estadísticos de renombre.  Amplia disponibilidad de documentación, tanto en internet como en libros publicados por editoriales de prestigio (Springer, Wiley).  Facilidad de integración con actividades de formación en técnicas y métodos estadísticos en todos los ámbitos del conocimiento. Su uso es cada vez más generalizado en las universidades, lo que implica que las nuevas generaciones de profesionales ya salen al mercado laboral con formación específica en el manejo de este programa.  En particular, su uso en la docencia tiene la ventaja de que no es necesario que el estudiante adquiera licencias para su uso, por lo que cualquier alumno puede instalar R en su ordenador personal y desarrollar tareas, trabajos, etc. utilizando este programa. Asimismo, una vez que el estudiante se gradúe y abandone la universidad, podrá seguir utilizando R en cualquier ámbito profesional o de desarrollo.  Existencia de extensiones específicas para nuevas áreas como bioinformática, geo estadística, modelos gráficos o análisis de mercados financieros3 . 3 La editorial Springer tiene una colección –UseR!– dedicada exclusivamente a R.
  • 11. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 11 Entre las desventajas podemos mencionar:  Suele señalarse como principal desventaja de R el hecho de que el paquete base no dispone de una interfaz amigable para el usuario; no existe un menú principal en el que el usuario pueda acceder mediante el ratón a submenús para la lectura de datos, la ejecución de procedimientos estadísticos o la generación de gráficos. Estas tareas se llevan a cabo mediante un lenguaje de comandos que puede resultar duro de aprender para el usuario común. No obstante se han desarrollado algunas GUIs (Graphical User Interfaces) que facilitan enormemente esta tarea. En particular la interfaz R-Commander desarrollada por John M. Fox en la McMaster University de Canadá presenta un menú para el acceso a los comandos más habituales que, además, muestra el código que emplea R de forma que permite al usuario familiarizarse con el lenguaje.  El código R es interpretado, no compilado, por lo que algún algoritmo puede resultar de ejecución lenta, en particular si se realizan tareas de simulación intensiva. Esto no constituye mayor problema para un uso ordinario del programa. En cualquier caso, a partir de la versión 2.14, todas las funciones y librerías de R se encuentran precompiladas, lo que acelera su ejecución de manera notable.  No dispone de un sistema de base de datos propio, aunque sí cuenta con un formato para el almacenamiento e intercambio de datos. En cualquier caso se han desarrollado paquetes para conectar y acceder a múltiples sistemas de bases de datos (las propias de SAS o SPSS, Access, dBase, Excel, MySQL, etc ). Tiene algunas limitaciones en cuanto al uso de la memoria,
  • 12. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 12 que dificultan el análisis de bases de datos masivas4 . No obstante estas limitaciones han ido desapareciendo a medida que se han ido desarrollando ordenadores con mayor capacidad (procesadores de 64 bits, más disponibilidad de memoria y de direccionamiento de la misma). En cualquier caso, salvo que el usuario deba acceder a millones de registros simultáneamente, es difícil que llegue a notar problemas con la memoria.  No dispone de un sistema de base de datos propio, aunque sí cuenta con un formato para el almacenamiento e intercambio de datos. En cualquier caso se han desarrollado paquetes para conectar y acceder a múltiples sistemas de bases de datos (las propias de SAS o SPSS, Access, dBase, Excel, MySQL, . . . ). Tiene algunas limitaciones en cuanto al uso de la memoria, que dificultan el análisis de bases de datos masivas5. No obstante estas limitaciones han ido desapareciendo a medida que se han ido desarrollando ordenadores con mayor capacidad (procesadores de 64 bits, más disponibilidad de memoria y de direccionamiento de la misma). En cualquier caso, salvo que el usuario deba acceder a millones de registros simultáneamente, es difícil que llegue a notar problemas con la memoria.  En algún caso las nuevas librerías que se incorporan a R pueden tener errores o fallos de implementación. Estos fallos, no obstante, suelen ser detectados por los usuarios, informados a los desarrolladores de las librerías y corregidos en tiempo récord. Debe señalarse, no obstante, que ningún programa (incluso los comerciales) está exento de fallos y el proceso de revisión y corrección de fallos en programas comerciales mediante parches 4 Ello se debe a que todos los datos con los que se trabaja deben permanecer simultáneamente en memoria. No obstante es posible derivar parte de la carga de trabajo del procesamiento de datos al propio motor de la base de datos que se utiliza, mediante comandos SQL.
  • 13. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 13 o actualizaciones suele ser notablemente más lento. Ello se debe a que todos los datos con los que se trabaja deben permanecer simultáneamente en memoria. No obstante es posible derivar parte de la carga de trabajo del procesamiento de datos al propio motor de la base de datos que se utiliza, mediante comandos SQL.  A todos los puntos anteriores podemos añadir el siguiente, que será considerado por unos una ventaja y por otros un inconveniente:  Para hacer un buen uso de R se debe tener un buen conocimiento de los métodos estadísticos. En realidad esta afirmación es cierta no sólo para R, sino para cualquier paquete estadístico. Sin embargo en la práctica programas como SPSS, Statistica o SYSTAT permiten, a través de sus menús, que el usuario pueda aplicar casi cualquier procedimiento estadístico –sea o no adecuado para sus datos o su problema– sin apenas esfuerzo y obtenga páginas de resultados que muchas veces es incapaz de interpretar. R es bastante más atento en sus salidas de resultados y, cuando se han de aplicar modelos de cierta complejidad, la mayoría de las veces el usuario se verá obligado a especificar exactamente qué es lo que quiere hacer, lo que implica buen nivel de conocimiento de los problemas abordados. R posee muchas funciones para análisis estadísticos y gráficos; estos últimos pueden ser visualizados de manera inmediata en su propia ventana y ser guardados en varios formatos (jpg, png, bmp, ps, pdf, emf, pictex, xfig; los formatos disponibles dependen del sistema operativo).
  • 14. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 14 Los resultados de análisis estadísticos se muestran en la pantalla, y algunos resultados intermedios (como valores P-, coeficientes de regresión, residuales,. . .) se pueden guardar, exportar a un archivo, o ser utilizados en análisis posteriores. El lenguaje R permite al usuario, por ejemplo, programar bucles (’loops’ en inglés) para analizar conjuntos sucesivos de datos. También es posible combinar en un solo programa diferentes funciones estadísticas para realizar análisis más complejos. Usuarios de R tienen a su disponibilidad un gran número de programas escritos para S y disponibles en la red;5 la mayoría de estos pueden ser utilizados directamente con R. Al principio, R puede parecer demasiado complejo para el usuario principiante. Esto no es necesariamente cierto, porque una de las características más sobresalientes de R es su enorme flexibilidad. Mientras que programas más clásicos muestran directamente los resultados de un análisis, R guarda estos resultados como un “objeto”, de tal manera que se puede hacer un análisis sin necesidad de mostrar su resultado inmediatamente. Esto puede ser un poco extraño para el usuario, pero esta característica suele ser muy útil. De hecho, el usuario puede extraer solo aquella parte de los resultados que le interesa. Por ejemplo, si uno corre una serie de 20 regresiones y quiere comparar los coeficientes de regresión, R le puede mostrar únicamente los coeficientes estimados: de esta manera los resultados se pueden resumir en una sola línea, mientras que un programa clásico le puede abrir 20 ventanas de resultados. Más adelante, veremos otros ejemplos que ilustran y comparan la flexibilidad de R con programas de estadística más tradicionales ( Paradis, 2010). 5 Por ejemplo: http://stat.cmu.edu/S/
  • 15. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 15 3. R como un sistema de ventanas La forma más conveniente de usar R es en una estación de trabajo con un sistema de ventanas. Estas notas están escritas pensando en usuarios de estas características. En particular nos referiremos ocasionalmente a la utilización de R en un sistema X-Windows, aunque normalmente se pueden aplicar a cualquier implementación del entorno R. 3.1 Utilización interactiva de R Cuando R espera la entrada de órdenes, presenta un símbolo para indicarlo. El símbolo predeterminado es ‘>’, que en UNIX puede coincidir con el símbolo del sistema, por lo que puede parecer que no sucede nada. Si ese es el caso es posible modificar este símbolo en R. 3.2 Programas relacionados. Documentación R puede definirse como una nueva implementación 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ásica 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ón de agosto de 1991 de S están recogidas en Statistical Models in S editado por John M. Chambers y Trevor J. Hastie. V´ease Apendice F [Referencias], página 100, para referencias concretas. 1.3 Estadística con R En la introducción 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écnicas estadísticas, tanto clásicas como modernas. Algunas est´an incluidas en el entorno
  • 16. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 16 base de R y otras se acompañan en forma de bibliotecas (packages). El hecho de distinguir entre ambos conceptos es fundamentalmente una cuesti´on hist´orica. Junto con R se incluyen ocho bibliotecas (llamadas bibliotecas est´andar) pero otras muchas est´an disponibles a través de Internet en CRAN (http://www.r- project.org). Como hemos indicado, muchas técnicas estadísticas, desde las clásicas hasta la última metodología, están disponibles en R, pero los usuarios necesitarán estar dispuestos a trabajar un poco para poder encontrarlas. Existe una diferencia fundamental en la filosofía que subyace en R (o S) y la de otros sistemas estadísticos. En R, un análisis estadístico se realiza en una serie de pasos, con unos resultados intermedios que se van almacenando en objetos, para ser observados o analizados posteriormente, produciendo unas salidas mínimas. 4. Objetos – Tipos (Vector, Array, Matriz, Factor, Serie temporal, Lista, Data frame) 4.1 Objetos En términos genéricos, todos los elementos que maneja R son objetos: un valor numérico es un objeto, un vector es un objeto, una función es un objeto, una base de datos es un objeto, un gráfico es un objeto, etc. Para realizar un uso eficiente de R es preciso entender y aprender a manipular bien las distintas clases de objetos que maneja el programa. En esta sección nos vamos a ocupar particularmente de aquellos objetos que R utiliza para representar datos: valores, vectores, matrices, dataframes, series temporales y listas. R utiliza la programación orientada a objetos. Ello significa que una misma función hace cosas distintas según la clase del objeto que recibe como argumento, pudiendo incluso no hacer nada (o producir un error) si se le pasan argumentos de una clase inadecuada (González & González, 2000).
  • 17. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 17 4.1.1 Vectores La función vector, que tiene dos argumentos mode y length, crea un vector cuyos elementos pueden ser de tipo numérico, lógico o carácter dependiendo del argumento especificado en mode (0, FALSE o “ ” respectivamente). Uso vector(mode = "logical", length = 0) Ejemplo: v <- vector("integer", 0) v # Un vector de enteros sin elementos ## integer(0) w <- vector("numeric", 3) w # Un vector de tres ceros ## [1] 0 0 0 u <- vector("logical", 5) u # Un vector de 5 FALSE ## [1] FALSE FALSE FALSE FALSE FALSE Las siguientes funciones tienen exactamente el mismo efecto y tienen un solo argumento (la longitud del vector): numeric(), logical(), y character(). El primer tipo de objeto que manejaremos es el vector (colección ordenada de elementos del mismo tipo). Podemos escribir vectores de varias maneras, utilizando la opción “:” (el vector comienza en el primer número suministrado y analiza en el segundo o en un
  • 18. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 18 numero anterior sin sobrepasarlo, tanto en orden ascendente como descendente) con mediante la función de concatenación “c( )". > 1:10 [1] 1 2 3 4 5 6 7 8 9 10 10:1 [1] 10 9 8 7 6 5 4 3 2 1 Tenemos, además, formas adicionales de crear vectores. Una de las más comunes es utilizando la función “seq(a, b, c)”, que genera secuencias de números reales, donde el primer elemento indicaría el principio de la secuencia, el segundo el final y el tercero el incremento que se debe usar para generar la secuencia. Aunque también podemos poner la función de estas formas “seq (length = d, from = a, to = b)” o “seq(by = c, f rom = a, to = b)” siendo “d” la longitud del vector. Ejemplo: seq(10) #mismo efecto que 1:10 seq(3,10) #mismo efecto que 3:10 seq(1,10, by=3) #saltando de 3 en 3 rep(1:4,2) #Vectores Constructores (repetimos 1:4 dos veces). rep(1:4,each=2) #repetimos 1:4 dos veces, #intercalando el resultado. Acceso a datos: datos #vector completo datos [1] #primer dato datos [-4] #todo menos el cuarto dato datos [c(1,3,5)] #posiciones 1, 3 y 5 datos [3:5] #posiciones 3 a 5 v <- datos>1 #vector lógico con true en la posición i sii datos[i]>1 datos[v] #posiciones con true en el vector v o De manera análoga, podemos modificar los datos:
  • 19. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 19 datos[1] <- 23 Asimismo la función vector tiene otras funciones complementarias con las cuales también se puede trabajar: as.vector: Es una función una genérica e intenta coaccionar su argumento en un vector del modo modo (el predeterminado es coaccionar a cualquier modo vectorial más conveniente): si el resultado es atómico todos los atributos se eliminan. is.vector: Es una función una genérica y devuelve TRUE si x es un vector del modo especificado que no tiene atributos que no sean nombres. De lo contrario devuelve FALSE. 4.1.2 Generación de Niveles La función “gl( )” (generador de niveles) genera series regulares de factores. Tiene la forma “gl(a, b)” donde “a” es el número de niveles (o clases) y “b” es el número de réplicas en cada nivel. Se pueden usar dos opciones: “length” para especificar el número de datos producidos, y “labels” para especificar los nombres de los factores. # Repetimos los dos niveles 6 veces con la etiqueta Hombre y Mujer > gl(2, 6, labels = c("Hombre", "Mujer")) Finalmente, “expand.grid( )” crea una tabla de datos con todas las combinaciones posibles de los elementos de los vectores o factores que proporcionemos como argumentos. > grid(edad=c(36,25), peso=c(75,60), sexo=c("Hombre","Mujer")) # Crea todas las combinaciones posibles
  • 20. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 20 R puede escribir vectores con caracteres o números, pero siempre entiende los elementos como si fuesen del mismo tipo. Un vector siempre está formado por elementos del mismo tipo, no pueden mezclarse números y cadenas de caracteres (se transformaría en cadenas de caracteres). Del mismo modo, si mezcla números reales y complejos, se entenderían como complejos. c("Hola", "Adios") c(1, 1+2i) c(1-1i, 2) dias.semana=c("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo ") > dias.semana Una opción de R es que podemos asignar nombres a los elementos de un vector mediante la función “names” (también se podría utilizar para nombrar cualquier objeto). x < - 1:7 names(x)< c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo") x Lunes Martes Miercoles Jueves Viernes Sabado Domingo 1 2 3 4 5 6 7 También podemos conocer o cambiar el modo o tipo de los elementos que forman el vector mediante la función “mode” (tomaría los valores: logical, numeric, complex, character, null, list, function, graphics, expression, name, frame, raw y unknown).
  • 21. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 21 4.1.3 Factores Un factor es un vector de cadenas de caracteres que sirve para representar datos categóricos, aunque no solo incluye estos valores sino que también los diferentes niveles posibles de esta variable. La función “factor” se utiliza para codificar un vector como un factor. Creando tantos niveles como le indiquemos. Conceptualmente, los factores son variables en R que toman un número limitado de valores diferentes; tales variables se refieren a menudo como variables categóricas. Uno de los usos más importantes de los factores es el modelado estadístico; dado que las variables categóricas entran en modelos estadísticos de forma diferente a las variables continuas, el almacenamiento de datos como factores asegura que las funciones de modelado traten dichos datos correctamente. Los factores en R se almacenan como un vector de valores enteros con un conjunto correspondiente de valores de caracteres que se utilizarán cuando se muestre el factor. La función factor se utiliza para crear un factor. El único argumento requerido para factor es un vector de valores que será devuelto como un vector de valores de factor. Las variables numéricas y de carácter se pueden convertir en factores, pero los niveles de un factor siempre serán valores de carácter. Puedes ver los niveles posibles para un factor a través del comando levels. Para cambiar el orden en el que se mostrarán los niveles de su orden ordenado por defecto, el argumento “levels =” puede recibir un vector de todos los valores posibles de la variable en el orden que desee. Si el pedido también debe utilizarse al realizar comparaciones, utilice el argumento opcional ordenado = VERDADERO. En este caso, el factor se conoce como un factor ordenado.
  • 22. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 22 Los niveles de un factor se utilizan cuando se muestran los valores del factor. Se puede cambiar estos niveles en el momento en que crea un factor pasando un vector con los nuevos valores a través del argumento labels =. Tenga en cuenta que esto realmente cambia los niveles internos del factor y para cambiar las etiquetas de un factor después de que se ha creado, se utiliza la forma de asignación de la función de niveles. Para ilustrar este punto, considere un factor tomando valores enteros que queremos mostrar como números romanos. # Tres niveles > factor(1:3) [1] 1 2 3 Levels: 1 2 3 El atributo “levels” indica los valores numéricos posibles (es decir los caracteres diferentes que aparecen en el vector). Se utiliza, por ejemplo, para dividir una población en grupos. La función “factor” se utiliza para codificar un vector como un factor. Creando tantos niveles como le indiquemos. # Cinco niveles > factor(1:3, levels=1:5) [1] 1 2 3 Levels: 1 2 3 4 5 # Un vector de dos elementos con cuatro niveles aa<-factor(c(2,3),levels=2:5) > aa [1] 2 3 Levels: 2 3 4 5 levels(aa)
  • 23. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 23 > levels(aa) [1] "2" "3" "4" "5" factor(c("Mujer","Mujer","Hombre")) [1] Mujer Mujer Hombre Levels: Hombre Mujer Con la opción “exclude”, por ejemplo “factor(1 : 5, exclude = 4)” excluimos los valores de los niveles que necesitemos y con “ordered” especificamos si los niveles del factor están ordenados. # Cinco niveles excluyendo el cuarto factor(1:5, exclude=4) [1] 1 2 3 <NA> 5 Levels: 1 2 3 5 Un error muy común es utilizar variables aparentemente numéricas en análisis estadísticos, por ejemplo números telefónicos o códigos postales. Por ello antes de utilizar un vector con caracteres cualitativos o cuantitativos dentro de un análisis, hace falta convertirlo en un factor. > data = c(1,2,2,3,1,2,3,3,1,2,3,3,1) > fdata = factor(data) > fdata [1] 1 2 2 3 1 2 3 3 1 2 3 3 1 Levels: 1 2 3 > rdata = factor(data,labels=c("I","II","III")) > rdata [1] I II II III I II III III I II III III I Levels: I II III
  • 24. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 24 Para convertir el factor predeterminado fdata a números romanos, usamos la forma de asignación de la función levels: > levels(fdata) = c('I','II','III') > fdata [1] I II II III I II III III I II III III I Levels: I II III Como ejemplo de un factor ordenado, considere los datos que consisten en los nombres de meses: > mons=c("March","April","January","November","January", "September", "October","September","November","August","January","November", "November","February","May","August","July","December","August", "August","September","November", "February","April") > mons = factor(mons) > table(mons) mons April August December February January July 2 4 1 2 3 1 March May November October September 1 1 5 1 3 Aunque los meses claramente tienen una ordenación, esto no se refleja en la salida de la función de tabla. Además, los operadores de comparación no son compatibles con factores no ordenados. La creación de un factor ordenado resuelve estos problemas:
  • 25. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 25 > mons = factor(mons,levels=c("January","February","March", "April", "May", "June","July","August","September", "October", "November" ,"December"), ordered=TRUE) Si digitamos en el siguiente comando tenemos mons[1] < mons[2] [1] TRUE table(mons) mons January February March April May June 3 2 1 2 1 0 July August September October November December 1 4 3 1 5 1 > fert = c(10,20,20,50,10,20,10,50,20) > fert = factor(fert,levels=c(10,20,50),ordered=TRUE) > fert [1] 10 20 20 50 10 20 10 50 20 Levels: 10 < 20 < 50 Si queremos calcular la media de los valores numéricos originales de la variable fert, tendríamos que convertir los valores usando la función levels: > mean(fert) [1] NA
  • 26. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 26 Warning message: argument is not numeric or logical: returning NA in: mean.default(fert) > mean(as.numeric(levels(fert)[fert])) [1] 23.33333 4.1.3 Indexación de Factores La indexación del valor devuelto de la función levels es la forma más confiable para convertir los factores numéricos a sus valores numéricos originales. Cuando se crea primero un factor, todos sus niveles se almacenan junto con el factor y si se extraen subconjuntos del factor, se conservarán todos los niveles originales. Esto puede crear problemas al construir matrices de modelos y puede o no ser útil al mostrar los datos usando, digamos, la función de tabla. Como ejemplo, considere una muestra aleatoria del vector de letras, que es parte de la distribución de base R. > lets = sample(letters,size=100,replace=TRUE) > lets = factor(lets) > table(lets[1:5]) a b c d e f g h i j k l m n o p q r s t u v w x y z 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 A pesar de que sólo cinco de los niveles realmente se representan, la función de tabla muestra las frecuencias para todos los niveles de los factores originales. Para cambiar esto, podemos simplemente usar otra llamada para factor > table(factor(lets[1:5])) a k q s z 1 1 1 1 1
  • 27. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 27 Para excluir ciertos niveles de aparecer en un factor, el argumento excluir = se puede pasar al factor. Por defecto, el valor faltante (NA) se excluye de los niveles de factor; para crear un factor que incluya valores perdidos de una variable numérica, use exclude = NULL. Se debe tener cuidado al combinar variables que son factores, porque la función c interpretará los factores como enteros. Para combinar los factores, primero deben ser convertidos de nuevo a sus valores originales (a través de la función de los niveles), luego catenated y convertido a un nuevo factor: > l1 = factor(sample(letters,size=10,replace=TRUE)) > l2 = factor(sample(letters,size=10,replace=TRUE)) > l1 [1] o b i v q n q w e z Levels: b e i n o q v w z > l2 [1] b a s b l r g m z o Levels: a b g l m o r s z > l12 = factor(c(levels(l1)[l1],levels(l2)[l2])) > l12 [1] o b i v q n q w e z b a s b l r g m z o Levels: a b e g i l m n o q r s v w z Existen funciones que nos permiten convertir diferentes clases de objetos a modos diferentes. Una situación frecuente es la conversión de factores a valores numéricos. En este caso, R realiza la conversión usando las expresiones “as.numeric” y “as.character”. Para realizar la conversión manteniendo los valores
  • 28. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 28 literales del factor, primero se debe convertir a carácter y después a numérico. Este procedimiento puede ser bastante útil si en un archivo una variable numérica también tiene valores no-numéricos. > c.p<-c(18002,18194,18199) > c.p [1] 18002 18194 18199 > mode(c.p) [1] "numeric" > codigo.postal<-factor(c.p) > codigo.postal [1] 18002 18194 18199 Levels: 18002 18194 18199 > c.p<-c(18002,18194,18199) > c.p [1] 18002 18194 18199 > mode(c.p) [1] "numeric" > codigo.postal<-factor(c.p) > codigo.postal [1] 18002 18194 18199 Levels: 18002 18194 18199 > f<-factor(c(1,3)) > as.numeric(f) [1] 1 2 > # Para guardarlos primero lo convertimos en carácter y luego en numerico > as.numeric(as.character(f)) [1] 1 3
  • 29. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 29 4.1.4 Listas Una lista se construye con la función list que devuelve un objeto de tipo lista con tantos componentes como argumentos se le suministren y es utilizado para devolver el resultado de una función. Una lista se crea de manera similar a un marco de datos con la función list. No existe ninguna limitación en el tipo de objetos que se pueden incluir. A diferencia de data.frame(), los nombres de los objetos no se toman por defecto; tomando los vectores x y y del ejemplo anterior: > dias.semana [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo" > list(A=dias.semana,B=1:7) >A [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo" > B [1] 1 2 3 4 5 6 7 Puede referirse a cada uno de los elementos de la lista de dos formas distintas: Si tiene nombre, como en este caso, mediante el nombre de la lista, el símbolo $ y el nombre del elemento. En cualquier caso, siempre puede referirse a él mediante el índice de posición entre dobles corchetes. > list(A=dias.semana,B=1:7)$A [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado" "Domingo" > list(A=dias.semana,B=1:7)$B [1] 1 2 3 4 5 6 7 La diferencia fundamental entre las tres formas, [, [[ y $ es que la primera permite seleccionar varios elementos, en tanto que las dos últimas solo permiten seleccionar uno. Además, $ no permite utilizar índices calculados. El operador [[necesita que se le indiquen todos los índices (ya que debe seleccionar un sólo
  • 30. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 30 elemento) en tanto que [permite obviar índices, en cuyo caso se seleccionan todos los valores posibles. Si se aplican a una lista, [[devuelve el elemento de la lista especificado y [devuelve una lista con los elementos especificados. 5. Operaciones con Matrices Las matrices o variables indexadas (Arrays) son generalizaciones multidimensionales de vectores. De hecho, son vectores indexados por dos o m´as indices y que se imprimen de modo especial. Para crearlas utilizamos la funci´on “matrix”. Los parámetros principales de esta función son: data (vector que contiene los valores que formarán la matriz), nrow (número de filas), ncol (número de columnas). > # Tenemos que tener en cuenta el tama~no de la matriz > m2<-matrix(1:4,3) Warning message: In matrix(1:4, 3) : La longitud de los datos [4] no es un submúltiplo o múltiplo del número de filas [3] en la matriz > # la longitud de los datos [4] no es un subm´ultiplo o m´ultiplo del n´umero de filas [3] en la matriz > m2<-matrix(1:4,2) > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 > m2<-matrix(1:8,4)
  • 31. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 31 > m2 [,1] [,2] [1,] 1 5 [2,] 2 6 [3,] 3 7 [4,] 4 8 # Hemos formado una matriz con el vector 1:8 de cuatro filas m3<-matrix(1:8,ncol=4) m3 > m3<-matrix(1:8,ncol=4) > m3 [,1] [,2] [,3] [,4] [1,] 1 3 5 7 [2,] 2 4 6 8 # Hemos formado una matriz con el vector 1:8 de cuatro columnas Si quiere dar nombres a las columnas (o a las filas) puedes hacerlo asignando valores al parámetro “dim-names”, lista con los nombres de las filas y las columnas. Las componentes de la lista deben tener longitud o ser un vector de cadenas de caracteres con la misma longitud que la dimensión de la matriz. # Renombramos las columnas matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3"))) > matrix(1:9,3,3,dim=list(c(),c("A1","A2","A3"))) A1 A2 A3 [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
  • 32. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 32 > # Renombramos las filas > matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c())) [,1] [,2] [,3] a1 1 4 7 a2 2 5 8 a3 3 6 9 # Renombramos filas y columnas matrix(1:9,3,3,dim=list(c("a1","a2","a3"),c("A1","A2","A3"))) A1 A2 A3 a1 1 4 7 a2 2 5 8 a3 3 6 9 Una operación muy común es hacer referencia a una submatriz o a un elemento de la matriz, se realiza indicando los índices de los elementos a los que se hace referencia. Podemos hacer referencia a una fila (vector) mediante matriz [i, ], con i el índice de la fila que queremos mostrar, o a una columna mediante matriz[ , j] con j el índice de la columna que queremos mostrar. Si lo que queremos es un elemento concreto indicamos los dos índices matriz[i, j], por ejemplo con matriz [2, 1], que da el valor 2º de la 1a variable que coincide con el 1o valor de la 2a variable. Un argumento útil en estas operaciones es la variable lógica “byrow” que indica si la matriz debe construirse por filas o por columnas (el valor predeterminado es F). > # Introducimos los datos, peso, altura, edad. > datos<-c(70,108,82,1.80,2.06,1.98,27,19,32) > mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T) > # Con byrow=T le hemos dicho que lea primero por filas > mm
  • 33. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 33 > datos<-c(70,108,82,1.80,2.06,1.98,27,19,32) > mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=T) > mm [,1] [,2] [,3] Peso 70.0 108.00 82.00 Altura 1.8 2.06 1.98 Edad 27.0 19.00 32.00 > mm [,1] [,2] [,3] Peso 70.0 108.00 82.00 Altura 1.8 2.06 1.98 Edad 27.0 19.00 32.00 > mm<-matrix(datos,ncol=3,dimnames=list(c("Peso","Altura","Edad"),c()),byrow=F) > # Con byrow=F le hemos dicho que lea primero por columnas, con lo que no se muestra correctamente > mm [,1] [,2] [,3] Peso 70 1.80 27 Altura 108 2.06 19 Edad 82 1.98 32 Podemos realizar operaciones con matrices de la misma forma que lo hacíamos con los vectores, es decir componente a componente: suma, resta, multiplicación por escalares, multiplicación elemento a elemento, división elemento a elemento, exponenciación, división entera y módulo, que se realizan mediante los símbolos: +, - , *, /, ˆ, % / % y % %. > M1
  • 34. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 34 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > M2<-matrix((1:6)^2,2,3) > M2 [,1] [,2] [,3] [1,] 1 9 25 [2,] 4 16 36 > M1+M2 [,1] [,2] [,3] [1,] 2 12 30 [2,] 6 20 42 Aunque en principio no están relacionadas las matrices con las tablas de frecuencias a partir de factores, podemos utilizar las primeras para expresar las segundas. Hemos visto que un factor define una tabla de entrada simple. Del mismo modo, dos factores definen una tabla de doble entrada, y así sucesivamente. La función “table( )” calcula tablas de frecuencias a partir de factores de igual longitud. Si existen k argumentos categóricos, el resultado será una variable k- indexada, que contiene la tabla de frecuencias. a=c(1,3,2) b=1.3 b=1:3 table(a,b)
  • 35. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 35 6. Arrays (Variable Multiindexada) La generalización de los vectores y matrices son las variables multiindexadas, denominadas arrays, y de las cuales son casos particulares los vectores y matrices. Una variable indexada (array) es una colección de datos, por ejemplo numéricos, indexados por varios índices. R permite crear y manipular variables indexadas, por ejemplo para crear una variable multiindexada se utiliza la función “array (data, dim, dimnames)” donde “dim” es un vector de dimensiones. Además podemos hacer referencia a cualquier subconjunto de la misma, de modo similar a las matrices. Bibliografía Paradis, E. (2010). R para principiantes. Universit Montpellier II. París: Institut des Sciences de l’E´volution. González, A., & González, S. (2000). Introdución al R. Notas sobre R: Un entorno de programación para Análisis de Datos y Gráficos. cran.r-project.org.
  • 36. Serie Apuntes de Clase ΩΒΓ / Finance &Business N°17. Octubre del 2017. FCE / UNMSM Introducción al R y al R- Studio Bustamante Romaní, Rafael. 36