SlideShare a Scribd company logo
1 of 64
Download to read offline
AGENDA
• Qué es R y cómo surge	

• Usuarios y usos	

• Qué instalar	

• El lenguaje…	

• Y sus peculiaridades
QUÉ ES
1.Un lenguaje de
programación	

2.El software libre
multiplataforma que
ejecuta programas escritos
en R y es altamente
extensible
EL ORIGEN
•Ross Ihaka (izq.) y Robert
Gentleman (der.), 1993	

•Es un dialecto del lenguaje S
de Bell Systems (1970’s)	

•Actualmente hay unas 20
personas trabajando en R
QUIÉNES LOS USAN
•Matemáticos	

•Biólogos	

•Científicos de datos	

•Financieros	

•Y cada vez más
programadores…
POPULARIDAD
EMPRESAS
... R is used in the news cycle at the The New York Times to crunch
data and prepare graphics before they go to print or online…, beyond
"Here is some data:" toward something closer to inference."
PARA QUÉ LO USAN
•Estadística 	

•Visualización	

•Supercómputo	

•Finanzas	

•Inteligencia artificial (machine learning)	

•Imagenología médica	

•Econometría	

•Física computacional
INSTALACIÓN
INSTALACIÓN
1. Ir a http://cran.r-project.org/
mirrors.html	

2. Elegir un mirror	

3. Elegir una versión para tu
sistema operativo (Linux,
Windows, OS X; código
fuente y binarios)	

!
¿Dudas? http://cran.r-project.org/doc/manuals/R-admin.html
R CONSOLE
El IDE básico
IDE’S
1. RStudio	

2. RExcel	

3. Rguis	

4. Vim-R-Tmux	

5. Emacs (ESS)	

6. Tinn-R	

7. RKWard	

8. RPy
RSTUDIO
Uno de los IDE’s más utilizados	

https://www.rstudio.com
RSTUDIO
El código fuente (arriba-izquierda)
RSTUDIO
La consola, el shell de R (abajo-izquierda)
RSTUDIO
Entorno (arriba-derecha)
RSTUDIO
Gráficas, paquetes, archivos, ayuda (abajo-derecha)
LIVE R
solución en la nube	

http://live-analytics.com
SHINY
aplicaciones web con R	

http://www.rstudio.com/shiny
MÁS QUE UN LENGUAJE
R ofrece más de 4,000 paquetes en http://cran.r-project.org
¿EL LENGUAJE?
LENGUAJE INTERPRETADO
Usa un CLI, como Python y JavaScript
TODO ES UNVECTOR
(Todo)
MULTIPARADIGMA
• Imperativo (como un script,
ejecutando una instrucción
tras otra, como Python)	

• Orientado a objetos (estilo
Java)	

• Funcional (estilo Lisp, con
funciones de primera clase —
funciones que pueden ser
pasadas como argumentos de
otras funciones—)
MULTIPARADIGMA
• Imperativo (como un script,
ejecutando una instrucción
tras otra, como Python)	

• Orientado a objetos (estilo
Java)	

• Funcional (estilo Lisp, con
funciones de primera clase —
funciones que pueden ser
pasadas como argumentos de
otras funciones—)
Como diría Larry Wall, esto
sólo significa que… 	

“Hay más de una forma de
hacerlo”
“EL PROBLEMA DE R ES
QUE FUE ESCRITO POR
GENTE DE ESTADÍSTICA”
MÁS QUE UN LENGUAJE
R es un entorno de programación para hacer estadística	

(de ahí sus peculiaridades)
MÁS QUE UN LENGUAJE
• Más que un lenguaje, un
entorno de interactivo de
programación	

• Pensemos en R más como
un entorno que “tiene un
lenguaje” y menos como “es
un lenguaje”	

• Así como Excel tieneVBA
Ry sus peculiaridades
ASIGNACIÓN
• La flecha <- es el operador
de asignación	

e <- m*c^2
• Aunque es posible esto, es
raro…	

m*c^2 -> e
GUIÓN BAJO
• Antes podías hacer esto para asignar el valor
de ‘f ‘a la variable ‘e’	

e_f
• Muuuy raro…Y esto llevó a usar el punto
en el nombre de las variables	

e.numero <- 2
• Eso desembocó en el uso de $ tal como
usamos el punto en otros lenguajes	

e$columna
LETRAS “RESERVADAS”
• O que es mejor usar como tales	

c, q, s, t, C, D, F, I, T
• Por ejemplo:	

• T y F son variables globales que valen por
defectoTRUE y FALSE, respectivamente…
Pero pueden cambiar :)	

• c es la función para crear vectores	

• q es la versión corta de quit, para terminar
la sesión
VECTORES
• Es el tipo de dato primario en R	

• Los vectores en R no son objetos
matemáticos (elementos de un espacio
vectorial)	

• Los vectores en R son colecciones de
datos, con operaciones uno-a-uno
VECTORES
• Las operaciones entre vectores de
diferentes longitudes son permitidas.
VECTORES
• No hay escalares en R, en todo caso, son
vectores con un solo elemento.	

• Los vectores tienen el mismo tipo de dato.
VECTORES
• A diferencia de la mayoría de los lenguajes, el índice inicial es 1 y
no 0 (como en FORTRAN)	

• El índice 0 es nada, literalmente. Una constante lógica llamada NA
en R que indica “valor perdido”. Es parecido al NULL, y None de
otros lenguajes.	

• (Pero R tiene su propio valor NULL: un objeto utilizado para
indicar que hay valores indefinidos.)
VECTORES
• Los índices negativos también son extraños…	

• En Python	

• y = [1,2,3,4]
• y[-3] es 2
• En R 	

• y <- c(1,2,3,4)
• y[-3] es eliminar el tercer componente
VECTORES
• R tiene indices booleanos, y pueden ser muy útiles
para seleccionar elementos	

!
!
• Y en asignaciones también
TIPOS
• Un vector debe contener solo uno
de estos tipos de datos atómicos	

• logical, integer, double, complex,
character, raw.	

• La función as. permite convertir
tipos (typecasting)
LISTAS
• Son como vectores,
pero con diferentes
tipos de datos	

• Accedes a los
elementos con [[]]
LISTAS
• Puedes nombrar elementos de la
lista y llamarlos con $
LISTAS
• Y agregar elementos nuevos
MATRICES
• Tipo de datos rectangular: columnas y filas,
todas con el mismo tipo de datos básico	

• O bien, un vector pero con el atributo dim: la
dimensión expresada en filas por columnas
DATA FRAMES
• Es la “hoja de cálculo” de R (salvo porque las
operaciones aplican a toda una fila o columna)	

• A diferencia de una matriz, mezcla nombres,
números y todo tipo de datos	

• Excelente para manipular CSV, XLS, etc.
DATA FRAMES
• Cómo construir un data frame a
partir de vectores
DATA FRAMES
• mtcars, un data frame muy completo
que viene con R para hacer pruebas
DATA FRAMES
• Acceder a los datos
• Por filas o columnas
UN RESUMEN
• Tres tipos de objetos:	

1. Vector	

2. Lista	

3. NULL	

• Objetos derivados:	

1. Matriz	

2. Data Frame	

3. Factor (una forma de categorizar datos)
Ralgo más
FUNCIONES
• Son como en JavaScript:	

• También son objetos, pero
sin llamarles clases	

• Es POO basada en
prototipos	

• Puedes crear funciones
anónimas (lambda)	

• Los argumentos siempre son
pasados por valor (salvo
cuando son cambiados)
SECUENCIAS
PAQUETES
• Los paquetes
disponibles en
su instalación
con library()
PAQUETES
• Paquetes del repositorio CRAN (¡más de 4,000!)	

• Instalación con install.packages(“nombre del paquete”)
PAQUETES
• Para utilizar un paquete recién instalado en R
con la función require()
MANTENIMIENTO
• Una nueva versión cada 6 meses 	

• update.packages() hace este trabajo
WORKSPACE
• Todo queda
en RAM	

• ls(), rm()	

• sessionInfo()
resume toda
la sesión
GRÁFICAS
• Nuestro lienzo es un graphics device creado principalmente con
plot()	

• Y sobre ese lienzo vamos pintando nuestra gráfica de forma muy
personalizable	

• Además de plot() tenemos pie(), hist(), rect(), polygon() y más
funciones incluidas con R. 	

• R tiene varios paquetes para gráficas:	

• rid	

• lattice	

• ggplot2 (muy popular)
GRÁFICAS
GRÁFICAS
ARCHIVOS
• CSV 	

• data <- read.csv(“datafile.csv")	

• XLS	

• library(gdata)	

• data <- read.xls(“data.xls")	

• Donde la variable data es un data frame	

• También abre archivos SPSS,TXT, XML, …
AYUDA
• help(plot)
• ?plot
• example(plot)
• http://rseek.org
CONCLUSIONES
• R es extraño (sintácticamente) para los
programadores tradicionales	

• R es software libre con una gran comunidad 	

• R es poderoso para hacer análisis de datos,
con miles de paquetes disponibles
REFERENCIAS
• http://data.princeton.edu/R/gettingStarted.html	

• http://www.revolutionanalytics.com
• http://www.johndcook.com/R_language_for_programmers.html	

• http://www.ats.ucla.edu/stat/r/seminars/intro.htm	

• http://jaredknowles.com/r-bootcamp/	

• http://tryr.codeschool.com/
• http://philipbjorge.com/dummy_wp_blog/wp-content/uploads/2012/03/RPoster.pdf	

• http://adv-r.had.co.nz/Vocabulary.html	

• https://www.edx.org/course/mitx/mitx-15-071x-analytics-edge-1416	

• http://www.burns-stat.com/pages/Tutor/R_inferno.pdf
• http://cran.r-project.org/doc/contrib/Short-refcard.pdf
• http://www.r-tutor.com/	

• http://baseballwithr.wordpress.com/about/ 	

• http://www.burns-stat.com/documents/tutorials/impatient-r/
Introducción a R: qué es, orígenes, usos y peculiaridades del lenguaje

More Related Content

What's hot

Análisis de datos con R - Techcivica
Análisis de datos con R - TechcivicaAnálisis de datos con R - Techcivica
Análisis de datos con R - TechcivicaSocialTIC
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicasPatriciaU
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasJose R. Trejo
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en javaTeresa Freire
 

What's hot (20)

Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas
ListasListas
Listas
 
Análisis de datos con R - Techcivica
Análisis de datos con R - TechcivicaAnálisis de datos con R - Techcivica
Análisis de datos con R - Techcivica
 
COLAS
COLASCOLAS
COLAS
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
 
Bibliotecas de c_
Bibliotecas de c_Bibliotecas de c_
Bibliotecas de c_
 

Similar to Introducción a R: qué es, orígenes, usos y peculiaridades del lenguaje

Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en RRosa E Padilla
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Nerys Ramírez Mordán
 
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...Luis Alan Navarro
 
Lisp tutorial en latex
Lisp tutorial en latexLisp tutorial en latex
Lisp tutorial en latexomar quito
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Mayra Almache
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionTensor
 
Danny tierra MINIMANUAL R-COMMANDER
Danny tierra   MINIMANUAL R-COMMANDERDanny tierra   MINIMANUAL R-COMMANDER
Danny tierra MINIMANUAL R-COMMANDERDanny Tierra
 
Tipos de datos orleny esperidin
Tipos de datos orleny esperidinTipos de datos orleny esperidin
Tipos de datos orleny esperidinMari_1114
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfFranciaMascarell
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLuis Fernando Aguas Bucheli
 
Estructura basica de_c_
Estructura basica de_c_Estructura basica de_c_
Estructura basica de_c_LaishaXime
 
Estructura basica de_c_(2)
Estructura basica de_c_(2)Estructura basica de_c_(2)
Estructura basica de_c_(2)gadiel1515
 

Similar to Introducción a R: qué es, orígenes, usos y peculiaridades del lenguaje (20)

R Introducción
R IntroducciónR Introducción
R Introducción
 
Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en R
 
Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
 
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
¿Por qué usar R y no otro? Perspectiva desde la opinión de un usuario asiduo ...
 
Lisp tutorial en latex
Lisp tutorial en latexLisp tutorial en latex
Lisp tutorial en latex
 
Java (1)
Java (1)Java (1)
Java (1)
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.
 
Introduccion a los algoritmos
Introduccion a los algoritmosIntroduccion a los algoritmos
Introduccion a los algoritmos
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Cálculo proposicional y de predicados
Cálculo proposicional y de predicadosCálculo proposicional y de predicados
Cálculo proposicional y de predicados
 
Danny tierra MINIMANUAL R-COMMANDER
Danny tierra   MINIMANUAL R-COMMANDERDanny tierra   MINIMANUAL R-COMMANDER
Danny tierra MINIMANUAL R-COMMANDER
 
PSEUDOCODIGO
PSEUDOCODIGOPSEUDOCODIGO
PSEUDOCODIGO
 
Poo presentacion
Poo presentacionPoo presentacion
Poo presentacion
 
Tipos de datos orleny esperidin
Tipos de datos orleny esperidinTipos de datos orleny esperidin
Tipos de datos orleny esperidin
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdf
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de Programación
 
Estructura basica de_c_
Estructura basica de_c_Estructura basica de_c_
Estructura basica de_c_
 
Estructura basica de_c_(2)
Estructura basica de_c_(2)Estructura basica de_c_(2)
Estructura basica de_c_(2)
 

More from Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

More from Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Introducción a R: qué es, orígenes, usos y peculiaridades del lenguaje

  • 1.
  • 2. AGENDA • Qué es R y cómo surge • Usuarios y usos • Qué instalar • El lenguaje… • Y sus peculiaridades
  • 3. QUÉ ES 1.Un lenguaje de programación 2.El software libre multiplataforma que ejecuta programas escritos en R y es altamente extensible
  • 4. EL ORIGEN •Ross Ihaka (izq.) y Robert Gentleman (der.), 1993 •Es un dialecto del lenguaje S de Bell Systems (1970’s) •Actualmente hay unas 20 personas trabajando en R
  • 5. QUIÉNES LOS USAN •Matemáticos •Biólogos •Científicos de datos •Financieros •Y cada vez más programadores…
  • 7. EMPRESAS ... R is used in the news cycle at the The New York Times to crunch data and prepare graphics before they go to print or online…, beyond "Here is some data:" toward something closer to inference."
  • 8. PARA QUÉ LO USAN •Estadística •Visualización •Supercómputo •Finanzas •Inteligencia artificial (machine learning) •Imagenología médica •Econometría •Física computacional
  • 10. INSTALACIÓN 1. Ir a http://cran.r-project.org/ mirrors.html 2. Elegir un mirror 3. Elegir una versión para tu sistema operativo (Linux, Windows, OS X; código fuente y binarios) ! ¿Dudas? http://cran.r-project.org/doc/manuals/R-admin.html
  • 11. R CONSOLE El IDE básico
  • 12. IDE’S 1. RStudio 2. RExcel 3. Rguis 4. Vim-R-Tmux 5. Emacs (ESS) 6. Tinn-R 7. RKWard 8. RPy
  • 13. RSTUDIO Uno de los IDE’s más utilizados https://www.rstudio.com
  • 14. RSTUDIO El código fuente (arriba-izquierda)
  • 15. RSTUDIO La consola, el shell de R (abajo-izquierda)
  • 18. LIVE R solución en la nube http://live-analytics.com
  • 19. SHINY aplicaciones web con R http://www.rstudio.com/shiny
  • 20. MÁS QUE UN LENGUAJE R ofrece más de 4,000 paquetes en http://cran.r-project.org
  • 22. LENGUAJE INTERPRETADO Usa un CLI, como Python y JavaScript
  • 24. MULTIPARADIGMA • Imperativo (como un script, ejecutando una instrucción tras otra, como Python) • Orientado a objetos (estilo Java) • Funcional (estilo Lisp, con funciones de primera clase — funciones que pueden ser pasadas como argumentos de otras funciones—)
  • 25. MULTIPARADIGMA • Imperativo (como un script, ejecutando una instrucción tras otra, como Python) • Orientado a objetos (estilo Java) • Funcional (estilo Lisp, con funciones de primera clase — funciones que pueden ser pasadas como argumentos de otras funciones—) Como diría Larry Wall, esto sólo significa que… “Hay más de una forma de hacerlo”
  • 26. “EL PROBLEMA DE R ES QUE FUE ESCRITO POR GENTE DE ESTADÍSTICA”
  • 27. MÁS QUE UN LENGUAJE R es un entorno de programación para hacer estadística (de ahí sus peculiaridades)
  • 28. MÁS QUE UN LENGUAJE • Más que un lenguaje, un entorno de interactivo de programación • Pensemos en R más como un entorno que “tiene un lenguaje” y menos como “es un lenguaje” • Así como Excel tieneVBA
  • 30. ASIGNACIÓN • La flecha <- es el operador de asignación e <- m*c^2 • Aunque es posible esto, es raro… m*c^2 -> e
  • 31. GUIÓN BAJO • Antes podías hacer esto para asignar el valor de ‘f ‘a la variable ‘e’ e_f • Muuuy raro…Y esto llevó a usar el punto en el nombre de las variables e.numero <- 2 • Eso desembocó en el uso de $ tal como usamos el punto en otros lenguajes e$columna
  • 32. LETRAS “RESERVADAS” • O que es mejor usar como tales c, q, s, t, C, D, F, I, T • Por ejemplo: • T y F son variables globales que valen por defectoTRUE y FALSE, respectivamente… Pero pueden cambiar :) • c es la función para crear vectores • q es la versión corta de quit, para terminar la sesión
  • 33. VECTORES • Es el tipo de dato primario en R • Los vectores en R no son objetos matemáticos (elementos de un espacio vectorial) • Los vectores en R son colecciones de datos, con operaciones uno-a-uno
  • 34. VECTORES • Las operaciones entre vectores de diferentes longitudes son permitidas.
  • 35. VECTORES • No hay escalares en R, en todo caso, son vectores con un solo elemento. • Los vectores tienen el mismo tipo de dato.
  • 36. VECTORES • A diferencia de la mayoría de los lenguajes, el índice inicial es 1 y no 0 (como en FORTRAN) • El índice 0 es nada, literalmente. Una constante lógica llamada NA en R que indica “valor perdido”. Es parecido al NULL, y None de otros lenguajes. • (Pero R tiene su propio valor NULL: un objeto utilizado para indicar que hay valores indefinidos.)
  • 37. VECTORES • Los índices negativos también son extraños… • En Python • y = [1,2,3,4] • y[-3] es 2 • En R • y <- c(1,2,3,4) • y[-3] es eliminar el tercer componente
  • 38. VECTORES • R tiene indices booleanos, y pueden ser muy útiles para seleccionar elementos ! ! • Y en asignaciones también
  • 39. TIPOS • Un vector debe contener solo uno de estos tipos de datos atómicos • logical, integer, double, complex, character, raw. • La función as. permite convertir tipos (typecasting)
  • 40. LISTAS • Son como vectores, pero con diferentes tipos de datos • Accedes a los elementos con [[]]
  • 41. LISTAS • Puedes nombrar elementos de la lista y llamarlos con $
  • 42. LISTAS • Y agregar elementos nuevos
  • 43. MATRICES • Tipo de datos rectangular: columnas y filas, todas con el mismo tipo de datos básico • O bien, un vector pero con el atributo dim: la dimensión expresada en filas por columnas
  • 44. DATA FRAMES • Es la “hoja de cálculo” de R (salvo porque las operaciones aplican a toda una fila o columna) • A diferencia de una matriz, mezcla nombres, números y todo tipo de datos • Excelente para manipular CSV, XLS, etc.
  • 45. DATA FRAMES • Cómo construir un data frame a partir de vectores
  • 46. DATA FRAMES • mtcars, un data frame muy completo que viene con R para hacer pruebas
  • 47. DATA FRAMES • Acceder a los datos • Por filas o columnas
  • 48. UN RESUMEN • Tres tipos de objetos: 1. Vector 2. Lista 3. NULL • Objetos derivados: 1. Matriz 2. Data Frame 3. Factor (una forma de categorizar datos)
  • 50. FUNCIONES • Son como en JavaScript: • También son objetos, pero sin llamarles clases • Es POO basada en prototipos • Puedes crear funciones anónimas (lambda) • Los argumentos siempre son pasados por valor (salvo cuando son cambiados)
  • 52. PAQUETES • Los paquetes disponibles en su instalación con library()
  • 53. PAQUETES • Paquetes del repositorio CRAN (¡más de 4,000!) • Instalación con install.packages(“nombre del paquete”)
  • 54. PAQUETES • Para utilizar un paquete recién instalado en R con la función require()
  • 55. MANTENIMIENTO • Una nueva versión cada 6 meses • update.packages() hace este trabajo
  • 56. WORKSPACE • Todo queda en RAM • ls(), rm() • sessionInfo() resume toda la sesión
  • 57. GRÁFICAS • Nuestro lienzo es un graphics device creado principalmente con plot() • Y sobre ese lienzo vamos pintando nuestra gráfica de forma muy personalizable • Además de plot() tenemos pie(), hist(), rect(), polygon() y más funciones incluidas con R. • R tiene varios paquetes para gráficas: • rid • lattice • ggplot2 (muy popular)
  • 60. ARCHIVOS • CSV • data <- read.csv(“datafile.csv") • XLS • library(gdata) • data <- read.xls(“data.xls") • Donde la variable data es un data frame • También abre archivos SPSS,TXT, XML, …
  • 61. AYUDA • help(plot) • ?plot • example(plot) • http://rseek.org
  • 62. CONCLUSIONES • R es extraño (sintácticamente) para los programadores tradicionales • R es software libre con una gran comunidad • R es poderoso para hacer análisis de datos, con miles de paquetes disponibles
  • 63. REFERENCIAS • http://data.princeton.edu/R/gettingStarted.html • http://www.revolutionanalytics.com • http://www.johndcook.com/R_language_for_programmers.html • http://www.ats.ucla.edu/stat/r/seminars/intro.htm • http://jaredknowles.com/r-bootcamp/ • http://tryr.codeschool.com/ • http://philipbjorge.com/dummy_wp_blog/wp-content/uploads/2012/03/RPoster.pdf • http://adv-r.had.co.nz/Vocabulary.html • https://www.edx.org/course/mitx/mitx-15-071x-analytics-edge-1416 • http://www.burns-stat.com/pages/Tutor/R_inferno.pdf • http://cran.r-project.org/doc/contrib/Short-refcard.pdf • http://www.r-tutor.com/ • http://baseballwithr.wordpress.com/about/ • http://www.burns-stat.com/documents/tutorials/impatient-r/