Una
Introducción
a la
Probabilidad Una Introducción a la Probabilidad y
y Estadística
Utilizando R Estadística Utilizando R
P
I EU R
IPEUR
Introduction
to Pro- Tema II. Una Introducción a R
bability
and Sta- Introduction to Probability and Statistics Using R
tistics Third Edition
Using R G. Jay Kerns
Third Presentación con diapositivas Beamer
Edition elaboradas por
G. Jay Luis Angel Zaldívar Cruz
Kerns
Presentación Departamento de Ciencias Básicas
con diapo- Instituto Tecnológico de Tehuacán
sitivas
Una introducción a R
¿Qué quiero que sepan?
Dónde encontrar R para instalarlo en un computadora de
escritorio, y algunos comentarios para ayudar con el
contratiempo habitual que se produce al instalar algo.
Comentarios abreviados sobre las opciones disponibles para
interactuar con R.
Operaciones básicas (aritmética, introducción de datos,
vectores) en el símbolo del sistema.
Cómo y dónde encontrar ayuda cuando tengamos
problemas.
Algunos atajos que generalmente se me preguntan al
presentar R.
Descarga e instalación de R
Las instrucciones para obtener R dependen en gran medida
del hardware y el sistema operativo del usuario.
El Proyecto R proporciona un manual de instalación y
administración de R con instrucciones completas y precisas
sobre qué hacer, junto con todo tipo de información
adicional.
Lo siguiente es sólo una base para que una persona pueda
empezar.
Instalación de R
Visite uno de los siguientes enlaces para descargar la última
versión de R para su sistema operativo:
Microsoft Windows:
[Link]
MacOS: [Link]
Linux: [Link]
Instalación de R
Instalación y carga de paquetes complementarios
Hay paquetes base (que vienen con R automáticamente) y paquetes
complementarios (que deben descargarse para su instalación).
Por ejemplo, en la versión de R que se utiliza para este documento,
utilizando la orden getOption("defaultPackages") (que permite al
usuario establecer y examinar una variedad de opciones globales que
afectan a la forma en que R calcula y muestra sus resultados), vemos que
los paquetes base predeterminados cargados al inicio son
[1] "datasets" "utils" "grDevices" "graphics" "stats" "methods"
Los paquetes base son mantenidos por un selecto grupo de voluntarios,
llamado R Core.
Además de los paquetes base, hay más de diez mil paquetes
complementarios aportados y escritos por individuos de todo el mundo.
Estos se almacenan en todo el mundo en los espejos de la red Global de
archivos R, o CRAN para abreviar.
Dada una conexión activa a Internet, cualquiera es libre de descargar e
instalar estos paquetes e incluso inspeccionar su código fuente.
Instalación de R
Instalación y carga de paquetes complementarios
Para instalar un paquete llamado foo, abra R y escriba
[Link] ("foo"). Para instalar foo e instalar
adicionalmente todos los demás paquetes de los que depende foo,
escriba [Link] ("foo", depends = TRUE). También
puede utilizar el menú Packages & Data en la barra del menú.
No importa cuántos paquetes estén instalados en el sistema, cada
uno debe cargarse para sus uso con la función library().
Por ejemplo, el paquete foreign contiene toda clase de funciones
necesarias para importar conjuntos de datos a R desde otro software
como SPSS, SAS, etc. Pero ninguna de esas funciones estará
disponible hasta que la orden library("foreign") se emita.
Escriba library () en el símbolo del sistema para ver una lista de
todos los paquetes disponibles en su biblioteca.
Comunicación con R
Una linea a la vez
Este es el método más básico y es el primero que usarán los
principiantes.
RGui (Microsoft © Windows)
RStudio
Terminal
Emacs/ESS, XEmacs
Comunicación con R
Múltiples líneas a la vez
A veces, el problema a resolver es muy complejo, por lo que se requiere
escribir una gran cantidad de código; así que escribirlo en el símbolo del
sistema no es conveniente. Para estos programas más largos existen los
llamados scripts.
Además, para secuencias de comandos más largas, es conveniente poder
modificar solo una parte determinada de la secuencia de comandos y
ejecutarla nuevamente en R.
Los programas llamados scripts están especialmente diseñados para ayudar
al proceso de comunicación y escritura de código.
Tienen todo tipo de características útiles que incluyen resaltado de sintaxis
R, finalización automática de código, coincidencia de delimitadores y ayuda
dinámica sobre las funciones R mientras se escriben.
Aún más, a menudo tienen todas las características de edición de texto de
programas como Microsoft Word.
Por último, la mayoría de los editores de scripts son totalmente
personalizables en el sentido de que el usuario puede personalizar la
apariencia de la interfaz para elegir qué colores mostrar, cuándo mostrarlos,
y cómo mostrarlos.
Comunicación con R
R Editor (Windows):
En Microsoft©Windows, R Gui tiene su propio editor de script
incorporado, llamado R Editor. Desde la ventana de la consola,
D
seleccione File New script. Se abre una ventana de scripts y las
líneas de código se pueden escribir en la ventana.
Se abre una ventana script y las líneas de código se pueden escribir
en la ventana. Cuando está satisfecho con el código, el usuario
resalta todos los comandos y presiona Ctrl + R. Los comandos se
ejecutan automáticamente a la vez en R y se muestra la salida.
D
Después, para guardar el script, haga clic en File Save as... en
R Editor. Posteriormente, el script se puede volver a abrir con File
D Open Script... en RGui.
Tenga en cuenta que R Editor no tiene el resaltado de sintaxis que
tienen los otros editores.
Comunicación con R
R Studio:
RStudio es un entorno de desarrollo integrado (IDE) para R. Incluye una
consola, editor de resaltado de sintaxis que admite la ejecución directa de
código, así como herramientas para el trazado, el historial, la depuración y
la gestión del espacio de trabajo.
Hay versiones para Windows, MacOSX, y Linux.
Emacs/ESS:
Emacs es un editor de texto de uso múltiple. Puede hacer absolutamente
cualquier cosa con respecto a la modificación, búsqueda, edición y
manipulación de texto.
Y si Emacs no puede hacerlo, puede escribir un programa que extienda
Emacs para hacerlo.
La ventaja de usar Emacs sobre RStudio es que puedo cambiar sin
problemas entre mis notas, listas de tareas, calendarios, etc., al tiempo que
desarrollo código.
Con ESS, una persona puede hablar con R, hacer todos los trucos que
ofrecen los otros editores de scripts y mucho, mucho más.
Comunicación con R
Emacs/ESS
No es necesario instalar, mantener y dominar múltiples aplicaciones, ya que
Emacs cubre casi todas las necesidades informáticas. Al igual que R, Emacs
incluye miles de paquetes que extienden su funcionalidad mucho más allá
de lo que cabría esperar de un editor de texto.
La desventaja de Emacs en comparación con RStudio es que no es tan
bonita.
Una desventaja temporal es que se requiere un poco de preparación para
habilitar la codificación en Emacs, pero eso es solo un obstáculo temporal y
se suma a la curva de aprendizaje.
ESS: Acrónimo de Emacs Speaks Statistics. Emacs habla estadística.
Comunicación con R
Interfaces gráficas de usuario (GUIs)
Por la palabra "GUI" me refiero a una interfaz en la que el usuario se
comunica con R a través de «apuntar y hacer clic» en un menú.
Nuevamente, hay muchas, muchas opciones y solo menciono una que he
usado y disfrutado.
R Commander proporciona una interfaz de «apuntar y hacer clic» para
muchas tareas estadísticas básicas. Se llama el "Commander" porque cada
vez que uno hace una selección de los menús, el código correspondiente a la
tarea aparece en la ventana de resultados.
R Commander proporciona una interfaz de «apuntar y hacer clic» para
muchos procesos básicos. Uno puede tomar este código, copiarlo y pegarlo
en un archivo de texto, luego volver a ejecutarlo más tarde sin la ayuda de
R Commander.
Es muy adecuado para el nivel introductorio. El paquete Rcmdr también
permite "Plugins" aportados por el usuario que son paquetes separados en
CRAN que agregan funcionalidad adicional al paquete Rcmdr.
Los complementos generalmente se nombran con el prefijo RcmdrPlugin
para facilitar su identificación en la lista de paquetes de CRAN. Uno de
estos complementos es el paquete [Link] que utilizaremos en
este curso.
Operaciones y conceptos básicos de R
Los desarrolladores de R han escrito un documento
introductorio titulado «Una introducción a R». En él se
incluye una sesión que muestra una interacción básica con
R.
Recomiendo que todos los usuarios nuevos de R lean ese
documento, pero tengan en cuenta que hay conceptos
mencionados que no serán familiares para el principiante.
A continuación se presentan algunas de las operaciones más
básicas que se pueden hacer con R. Casi todos los libros
sobre R comienzan con una sección como la siguiente; vea
todo lo que se puede hacer en este nivel más básico.
Operaciones y conceptos básicos de R
Aritmética
> 4+5 # Adición
[1] 9
> 8 * 4 # Multiplicación
[1] 32
> 7^6 # 7 a la 8a potencia
[1] 117649
Observe el carácter del comentario #. R ignora todo lo que
se escribe después de un símbolo #.
> 20/6 # División
[1] 3.333333
Sabemos que 20/6 es un decimal repetido, pero el ejemplo
anterior muestra solo 7 dígitos. Podemos cambiar la
cantidad de dígitos que se muestran con el comando
options:
Operaciones y conceptos básicos de R
Aritmética
> options(digits=16) # Ver 16 dígitos
> 10 / 3
[1] 3.333333333333333
> sqrt(2) # Raíz cuadrada de 2
[1] 1.414213562373095
> exp(1) # Constante de Euler
[1] 2.718281828459045
> pi # Valor de π
[1] 3.141592653589793
> options(digits=7) # Regreso al número de dígitos
por defecto
Es posible establecer el número de dígitos hasta 22, pero no se
recomienda establecerlos por encima de 16 (los dígitos extra
significativos no son necesariamente confiables).
Operaciones y conceptos básicos de R
Asignación, nombres de objetos y tipos de datos
A menudo es conveniente asignar números y valores a
variables (objetos) para usarlos posteriormente. La forma
correcta de asignar valores a una variable es con el
operador <-.
El símbolo = también funciona, pero los expertos en R
recomiendan reservar = para especificar argumentos para
funciones (discutido más adelante).
En este curso seguiremos los consejos de los expertos y
usaremos <- para la asignación.
Una vez que se asigna un valor a una variable, este valor se
puede imprimir simplemente ingresando el nombre de la
variable.
Operaciones y conceptos básicos de R
Asignación, nombres de objetos y tipos de datos
> x <- 7*41/pi # No se ve el valor calculado
> x # Se ve el valor asignado a la variable x
[1] 91.35494
Al elegir un nombre de variable, puede usar letras, números,
puntos ".", o caracter de subrayado "_".
No puede usar operadores matemáticos, y un punto inicial no
puede ser seguido por un número. Ejemplos de nombres válidos
son: x, x1, [Link] y y_cero.
Ver An Introduction to R para más detalles en ésto [1].
Operaciones y conceptos básicos de R
Asignación, nombres de objetos y tipos de datos
Los objetos pueden ser de muchos tipos, modos y clases. En este
nivel, no es necesario investigar todas las complejidades de los tipos
respectivos, pero hay algunas con las que debe familiarizarse:
Integer: los valores 0, ±1, ±2, ... ; estos están representados
exactamente por R.
double: números reales (racionales e irracionales); estos
números no están representados exactamente (excepto enteros o
fracciones con un denominador que sea una potencia de 2).
complex: números complejos.
character: elementos que están encerrados con pares de " o ’.
logical: incluye TRUE, FALSE y NA (que son palabras
reservadas); NA significa "no disponible", es decir, un valor
faltante.
Operaciones y conceptos básicos de R
Asignación, nombres de objetos y tipos de datos
Puede determinar el tipo de un objeto con la función typeof.
> sqrt(-1) # No está definido
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced
En cambio:
> sqrt(-1+0i) # Está definido
[1] 0+1i
Alternativamente:
> sqrt([Link](-1)) # Igual, está definido
[1] 0+1i
También,
> (0 + 1i)^2 # Debería ser -1
[1] -1+0i
Comprobamos el tipo:
> typeof((0 + 1i)^2)
[1] "complex"
Operaciones y conceptos básicos de R
Vectores
R opera sobre estructuras de datos con nombre. La estructura más simple es
el vector numérico, que es una entidad única que consiste en una colección
ordenada de números. Para configurar un vector llamado x que consta de
cinco números, es decir, 10.4, 5.6, 3.1, 6.4 y 21.7, use el comando R
> x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
> x
[1] 10.4 5.6 3.1 6.4 21.7
Esta es una declaración de asignación que usa la función c() que en este
contexto puede tomar un número arbitrario de argumentos vectoriales y
cuyo valor es un vector obtenido mediante la concatenación de sus
argumentos de extremo a extremo.
Un número que aparece por sí solo en una expresión se toma como un
vector de longitud uno.
Los elementos de un vector generalmente son coercionados por R al tipo
más general de cualquiera de los elementos, por lo que si hace c(1, "2"),
entonces el resultado será c("1", "2").
Operaciones y conceptos básicos de R
Vectores
Observe que el operador de asignación (’<-’), que consiste en los dos
caracteres ’<’ (“menor que”) y ’-’ (“menos”) que aparecen
estrictamente uno al lado del otro y ’apunta’ al objeto que recibe el
valor de la expresión.
La asignación también se puede realizar utilizando la función
assign(). El operador habitual, <-, puede considerarse como un
atajo sintáctico para esto. Una forma equivalente de hacer la misma
asignación que la anterior es con:
> assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7))
Las asignaciones también se pueden hacer en la otra dirección,
utilizando el cambio obvio en el operador de asignación. Entonces se
podría hacer la misma asignación usando
> c(10.4, 5.6, 3.1, 6.4, 21.7) -> x
Operaciones y conceptos básicos de R
Vectores
Si se usa una expresión como un comando completo, el valor se
imprime y se pierde. Entonces, si tuviéramos que usar el
comando
1/x
[1] 0.09615385 0.17857143 0.32258065 0.15625000
0.04608295
los recíprocos de los cinco valores se imprimen en la terminal (y
el valor de x, por supuesto, no se altera).
La asignación adicional
> y <- c(x, 0, x)
> y
[1] 10.4 5.6 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7
crea un vector y con 11 entradas que consisten en dos copias de
x con un cero en el medio.
Operaciones y conceptos básicos de R
Vectores
Una forma más corta: el método scan() es útil cuando
los datos se almacenan en otro lugar.
Por ejemplo, puede escribir x <- scan () en el símbolo
del sistema y R mostrará 1: para indicar que está
esperando el primer valor de datos. Escriba un valor y
presione Entrar, entonces R mostrará 2:, y así
sucesivamente. Tenga en cuenta que al ingresar una línea
vacía se detiene el escaneo. Este método es especialmente
útil cuando tiene una columna de valores, por ejemplo,
almacenada en un archivo de texto u hoja de cálculo.
Puede copiarlos y pegarlos todos en el indicador 1: y R
almacenará todos los valores instantáneamente en el vector
x.
Operaciones y conceptos básicos de R
Aritmética vectorial
Los vectores se pueden usar en expresiones aritméticas, en
cuyo caso las operaciones se realizan elemento por
elemento.
No es necesario que todos los vectores que aparecen en la
misma expresión sean de la misma longitud.
Si no lo son, el valor de la expresión es un vector con la
misma longitud que el vector más largo que aparece en la
expresión.
Los vectores más cortos en la expresión se reciclan tanto
como sea necesario (quizás fraccionalmente) hasta que
coincidan con la longitud del vector más largo.
En particular, una constante simplemente se repite.
Operaciones y conceptos básicos de R
Aritmética vectorial
Entonces, con las asignaciones anteriores, el comando
> v <- 2*x + y + 1
Warning message: In 2 * x + y :
longer object length is not a multiple of shorter object length
genera un nuevo vector v de longitud 11 construido sumando, elemento por
elemento, 2 * x repetido 2.2 veces, y repetido solo una vez, y 1 repetido
11 veces.
Los operadores aritméticos elementales son los habituales +, -, *, /, y^
para elevar a una potencia.
Además, todas las funciones comunes están disponibles. log, exp, sin,
cos, tan, sqrt, etc., todos tienen su significado habitual.
max y min seleccionan los elementos más grandes y más pequeños de un
vector respectivamente.
range es una función cuyo valor es un vector de longitud dos, a saber,
c(min(x),max(x)).
length(x) es el número de elementos en x, sum(x) da el total de los
elementos en x, y prod(x) su producto.
Operaciones y conceptos básicos de R
Generación de secuencias regulares
R tiene varias facilidades para generar secuencias de
números comúnmente utilizadas. Por ejemplo 1:30 es el
vector c(1,2,...,30).
El operador de dos puntos tiene alta prioridad dentro de
una expresión, así, por ejemplo 2*1:15 es el vector
c(2,4,...,28,30).
Escriba n <- 10 y compare las secuencias 1:n-1 y
1:(n-1).
La construcción 30:1 puede usarse para generar una
secuencia hacia atrás.
Operaciones y conceptos básicos de R
Generación de secuencias regulares
La función seq() es una función más general para generar secuencias.
Tiene cinco argumentos, pero solo algunos de los cuales pueden
especificarse en cualquier llamada.
Los dos primeros argumentos, si se proporcionan, especifican el
principio y el final de la secuencia, y si estos son los únicos dos
argumentos dados, el resultado es el mismo que el operador de
dos puntos. Es decir, seq(2,10) es el mismo vector que 2:10.
Los argumentos a seq(), y a muchas otras funciones R,
también se pueden dar en forma nombrada, en cuyo caso el
orden en que aparecen es irrelevante.
Los dos primeros argumentos pueden ser nombrados from =
valor y to = valor; así seq(1,30), seq(from = 1,to =
30) y seq(to = 30,from = 1) son todos iguales a 1:30.
Los siguientes dos argumentos para seq() pueden ser
nombrados by = valor y length = valor, que especifican un
tamaño de paso y una longitud para la secuencia
respectivamente.
Operaciones y conceptos básicos de R
Generación de secuencias regulares
Si no se da ninguno de estos, se asume el valor predeterminado by = 1.
Por ejemplo:
> seq(-5, 5, by=.2) -> s3
genera en s3 el vector c(-5.0,-4.8,-4.6,...,4.6,4.8,5.0). Similarmente
> s4 <- seq(length=51, from=-5, by=.2)
genera el mismo vector en s4.
El quinto argumento puede ser nombrado along = vector, que normalmente se usa como el
único argumento para crear la secuencia 1, 2, ...,length(vector) o la secuencia vacía si
el vector está vacío.
Una función relacionada es rep(), que puede usarse para replicar un objeto de varias formas
complicadas. La forma más simple es
> s5 <- rep(x, times=5)
que asignará cinco copias de x en s5. Otra versión útil es
> s6 <- rep(x, each=5)
que repite cada elemento de x cinco veces antes de pasar al siguiente.
Operaciones y conceptos básicos de R
Vectores lógicos
Los elementos de un vector lógico pueden tener los valores TRUE, FALSE
y NA (para "no disponible"). Los dos primeros a menudo se abrevian como
T y F, respectivamente. Sin embargo, tenga en cuenta que T y F son solo
variables que se establecen en TRUE y FALSE por defecto, pero no son
palabras reservadas y, por lo tanto, el usuario puede sobrescribirlas. Por lo
tanto, siempre debe usar TRUE y FALSE.
Los vectores lógicos son generados por condiciones. Por ejemplo
> temp <- x > 13
establece temp como un vector de la misma longitud que x con
valores FALSE correspondientes a elementos de x donde no se cumple
la condición y TRUE donde se cumple la condición.
Los operadores lógicos son <, <=,>,>=, == para la igualdad exacta y
!= para la desigualdad. Además, si c1 y c2 son expresiones lógicas,
entonces c1&c2 es su intersección ("y"), c1|c2 es su unión ("o"), y
!c1 es la negación de c1.
Operaciones y conceptos básicos de R
Valores faltantes
En algunos casos, los componentes de un vector pueden no ser
completamente conocidos. Cuando un elemento o valor "no está
disponible" o es un "valor perdido" en el sentido estadístico, se les asigna
el valor especial NA. En general, cualquier operación en un NA se convierte
en un NA. La motivación para esta regla es simplemente que si la
especificación de una operación es incompleta, el resultado no puede
conocerse y, por lo tanto, no está disponible.
La función [Link](x) proporciona un vector lógico del mismo tamaño
que x con el valor TRUE si y solo si el elemento correspondiente en x
es NA.
> z <- c(1:3,NA); ind <- [Link](z)
Observe que la expresión lógica x == NA es bastante diferente de
[Link](x) ya que NA no es realmente un valor sino un marcador para
una cantidad que no está disponible. Por lo tanto, x == NA es un
vector de la misma longitud que x, todos cuyos valores son NA, ya
que la expresión lógica en sí es incompleta y, por lo tanto, no se
puede decidir.
Operaciones y conceptos básicos de R
Valores faltantes
Tenga en cuenta que hay una segunda clase de valores
"perdidos" que se producen por cálculo numérico, los así
llamados NaN, Not a Number. Ejemplos son
> 0/0
[1] NaN
o
> Inf - Inf
[1] NaN
que dan NaN ya que el resultado no se puede definir.
En resumen, [Link](xx) es TRUE tanto para los valores NA
como para los NaN. Para diferenciar estos, [Link](xx) solo es
TRUE para NaNs.
Operaciones y conceptos básicos de R
Vectores de caracteres
Las cantidades y los vectores de caracteres se usan con frecuencia en
R, por ejemplo, como etiquetas de gráficos. Cuando sea necesario, se
denotan por una secuencia de caracteres delimitados por comillas
dobles, por ejemplo, "x-valores", "Resultados de la nueva iteración".
Las cadenas de caracteres se ingresan usando comillas dobles (") o
simples (’), pero se imprimen usando comillas dobles (o algunas veces
sin comillas).
Utilizan secuencias de escape de estilo C, usando \ como carácter de
escape, entonces \\ es ingresado e impreso como \\, y dentro de las
comillas dobles "se ingresa como \". Otras secuencias de escape
útiles son \n, nueva línea, \t, tabulación y \b, retroceso;
> "La regla de L\’Hôpital"
> "\"It’s alive!\", he screamed."
> ’"It\’s alive!", he screamed.’
Los vectores de caracteres pueden concatenarse en un vector
mediante la función c().
Operaciones y conceptos básicos de R
Vectores de caracteres
La función paste() toma un número arbitrario de argumentos y los
concatena uno por uno en cadenas de caracteres. Evidentemente, los
números dados entre los argumentos son coercionados en cadenas de
caracteres, es decir, de la misma manera que lo serían si se
imprimieran. Por defecto, los argumentos están separados en el
resultado por un solo carácter en blanco, pero esto puede cambiarse
mediante el argumento nombrado, sep = string, que lo cambia a
string, posiblemente vacío.
Por ejemplo
> labs <- paste(c("X","Y"), 1:10, sep="")
asigna en labs el vector de caracteres
c("X1","Y2","X3","Y4","X5","Y6","X7","Y8","X9","Y10")
Tenga en cuenta que aquí también se reciclan listas cortas; entonces
c("X","Y") es repetido 5 veces para que coincida con la secuencia
1:10.
Operaciones y conceptos básicos de R
Vectores índice; selección y modificación de subconjuntos de un
conjunto de datos
Los subconjuntos de elementos de un vector pueden seleccionarse agregando al nombre del vector
un vector índice entre corchetes. Más generalmente, cualquier expresión que se evalúe como un
vector puede tener subconjuntos de sus elementos seleccionados de manera similar al agregar un
vector índice entre corchetes inmediatamente después de la expresión.
Tales vectores índices pueden ser cualquiera de cuatro tipos distintos.
1. Un vector lógico. En este caso, el vector índice se recicla a la misma longitud que el vector
del que se van a seleccionar los elementos. Se seleccionan los valores correspondientes a
TRUE en el vector índice y se omiten los correspondientes a FALSE. Por ejemplo
> y <- x[]
crea (o vuelve a crear) un objeto y que contendrá los valores no perdidos de x, en el la
misma orden. Tenga en cuenta que si x tiene valores perdidos, y será más corto que x.
También
> (x+1)[() & x>0] -> z
crea un objeto z y coloca en él los valores del vector x + 1 que no son perdidos y son
positivos.
Operaciones y conceptos básicos de R
Vectores índice; selección y modificación de subconjuntos de un
conjunto de datos
2. Un vector de cantidades enteras [Link] este caso, los valores en el vector índice deben
estar en el conjunto {1, 2,. . . , length(x)}. Los elementos correspondientes del vector
se seleccionan y concatenan, en ese orden, en el resultado. El vector índice puede tener
cualquier longitud y el resultado es de la misma longitud que el vector índice. Por ejemplo,
x[6] es el sexto componente de x y
> x[1:10]
selecciona los primeros 10 elementos de x (suponiendo que length(x) no sea inferior a 10).
también
> c("x","y")[rep(c(1,2,2,1), times=4)]
(algo que es improbable) produce un vector de caracteres de longitud 16 que consiste en
"x", "y", "y", "x" repetido cuatro veces.
Operaciones y conceptos básicos de R
Vectores índice; selección y modificación de subconjuntos de un
conjunto de datos
3. Un vector de cantidades enteras negativas. Tal vector índice especifica
los valores a excluir. Así
> y <- x[-(1:5)]
asigna en y los elementos de x con la excepción de los primeros cinco
elementos de x.
4. Un vector de cadena de caracteres. Esta posibilidad solo se aplica cuando
un objeto tiene un atributo names para identificar sus componentes. En este
caso, se puede usar un sub-vector del vector de nombres de la misma
manera que las etiquetas integrales positivas en el ítem 2 más arriba.
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange","banana","apple","peach")
> lunch <- fruit[c("apple","orange")]
La ventaja es que los nombres alfanuméricos son a menudo más fáciles de
recordar que los índices numéricos. Esta opción es particularmente útil en
conexión con marcos de datos.
Vectores índice; selección y modificación de
subconjuntos de un conjunto de datos
Una expresión indexada también puede aparecer en el extremo
receptor de una asignación, en cuyo caso la operación de
asignación se realiza solo en aquellos elementos indexados del
vector. La expresión debe tener la forma
vector[index_vector].
Por ejemplo
> x[[Link](x)] <- 0
reemplaza los valores faltantes en x por ceros y
> y[y < 0] <- -y[y < 0]
tiene el mismo efecto que
> y <- abs(y)
Vectores índice; selección y modificación de
subconjuntos de un conjunto de datos
Funciones y expresiones
Una función toma argumentos como entrada y devuelve un objeto como salida.
Hay funciones para hacer todo tipo de cosas. Mostramos algunos ejemplos a
continuación.
x <- 1:5
sum(x)
[1] 15
length(x)
[1] 5
min(x)
[1] 1
mean(x) # media muestral
[1] 3
sd(x) # desviación estándar muestral
[1] 1.581139
Vectores índice; selección y modificación de
subconjuntos de un conjunto de datos
Otros tipos de objetos
Los vectores son del tipo de objeto más importante en R, pero hay varios otros que veremos
posteriormente.
Las matrices o, más generalmente, los arreglos (array) son generalizaciones
multidimensionales de vectores. De hecho, son vectores que pueden indexarse mediante dos
o más índices y se imprimen de formas especiales.
Los factores proporcionan formas compactas de manejar datos categóricos.
Las listas son una forma general de vector en el que los diversos elementos no necesitan ser
del mismo tipo, y a menudo son vectores o listas. Las listas proporcionan una forma
conveniente de devolver los resultados de un cálculo estadístico.
Los marcos de datos (hoja de cálculo) son estructuras parecidas a una matriz, en las cuales
las columnas pueden ser de diferentes tipos. Imagine los marcos de datos como "matrices
de datos" con una fila por unidad observacional pero con (posiblemente) variables
numéricas y categóricas. Muchos experimentos se describen mejor mediante marcos de
datos: los tratamientos son categóricos pero la respuesta es numérica.
Las funciones definidas por el usuario son en sí mismas objetos en R que pueden
almacenarse en el espacio de trabajo del proyecto. Esto proporciona una manera simple y
conveniente de extender R.
Bibliografía
An Introduction to R. Notes on R: A Programming
Environment for Data Analysis and Graphics. W. N.
Venables, D. M. Smith and the R Core Team. This manual
is for R, version 3.6.3 (2020-02-29).
Introduction to Probability and Statistics Using R. G. Jay
Kerns. Third Edition(2018)