CONOCIENDO EL LENGUAJE R – Primeros pasos

By | septiembre 22, 2020

 

 

Cuando hemos desarrollado aplicaciones, el lenguaje podría variar muy poco, la programación es una sola. Sin embargo existen en un lenguaje y otro,  diferencias de como presentamos las sentencias, los operadores de asignación, metodologías de ejecución del script pero por lo general tiene una misma línea de programación, así que a perder el miedo y a comenzar con los primeros pasos en este lenguaje, eso si, notaran que existe insistencia en los cálculos matemáticos, recuerden que R, dentro de sus fortalezas están las estadísticas y los gráficos y en este ultimo debemos trabajar y entender matrices, vectores y factorizaciones de datos.

Utilizando el IDE RStudio, en la consola ingresaremos lo siguiente:

>x <- 5
> x
[1] 5
> print(x)
[1] 5

el signo inicial > es el prompt o indicador del IDE donde esta esperando el ingreso manual de la sentencia. En el indicador R escribimos expresiones. el símbolo <- es el operador de asignación, esto lo podemos ver en la segunda línea de la sentencia.

Luego, en la segunda línea >x estamos colocando la variable que tiene asignado el valor 5 por lo que en la línea siguiente nos los muestra. Esta es la forma implícita de entregar un resultado pero la forma correcta es a través de la función PRINT()

RStudio, nos apoya con los ingresos y nos sugiere a medida que vamos escribiendo la palabra reservada del lenguaje.

Cuando se ingresa una expresión completa en el indicador, se evalúa y el resultado de la evaluación se devuelve la expresión. El resultado puede imprimirse automáticamente.

>x <- 14 ## nothing printed
> x ## auto-printing occurs
[1] 14
> print(x) ## explicit printing
[1] 14

El carácter # indica un comentario. Todo lo que esté a la derecha del # (incluido el propio #) se ignora.
Este es el único carácter de comentario en R. A diferencia de otros idiomas, R no admite varias líneas comentarios o bloques de comentarios.

El [1] que se muestra en la salida indica que x es un vector y 5 es su primer elemento. Normalmente, con el trabajo interactivo, no imprimimos objetos explícitamente con la función de impresión; es mucho es más fácil imprimirlos automáticamente escribiendo el nombre del objeto y presionando Return / Enter. Sin embargo, al escribir scripts, funciones o programas más largos, a veces es necesario imprimir explícitamente objetos porque la impresión automática no funciona en esa configuración. Por lo demás apegado a la buenas prácticas la función Print() debe colocarse.
Cuando se imprime un vector R, notará que un índice para el vector se imprime entre corchetes [ ] en el lado. Por ejemplo, vea esta secuencia entera de longitud 20:

> x <- 11:30

> x

[1] 11 12 13 14 15 16 17 18 19 20 21 22

[13] 23 24 25 26 27 28 29 30

Los números entre corchetes no son parte del vector en sí, son simplemente parte de la salida impresa.

Los Objetos en R

Para R, casi todo es considerado un objeto. R tiene cinco clases de objetos básicos o «atómicos»:
• caracteres
• numérico (números reales)
• entero
• complejo
• lógico (verdadero / falso)

El tipo más básico de objeto R es un vector. Los vectores vacíos se pueden crear con la función vector ().
En realidad, solo hay una regla sobre los vectores en R, que es que un vector solo puede contener objetos
de la misma clase. Pero claro, como toda buena regla, hay una excepción, que es una lista, a la que llegaremos un poco más adelante. Una lista se representa como un vector, pero puede contener objetos de diferentes clases. De hecho, eso suele ser por qué los usamos. También hay una clase para objetos «sin procesar», pero no se suelen utilizar directamente en el análisis de datos y No lo veremos en este capítulo.

1.0 Los números (Numbers)

Los números en R generalmente se tratan como objetos numéricos (es decir, números reales de doble precisión). Esta significa que incluso si ve un número como «1» o «2» en R, que podría considerar como números enteros,
es probable que se representen detrás de escena como objetos numéricos (algo así como “1.00” o “2.00”). Esta
no es importante la mayor parte del tiempo … excepto cuando lo es.
Si desea explícitamente un número entero, debe especificar el sufijo L. Entonces, ingresar 1 en R te da un
objeto numérico; ingresar 1L explícitamente le da un objeto entero.
También hay un número especial Inf que representa el infinito. Esto nos permite representar entidades como
1 / 0. De esta manera, Inf se puede utilizar en cálculos ordinarios; p.ej. 1 / Inf es 0.
El valor NaN representa un valor indefinido («no es un número»); p.ej. 0/0; También se puede pensar en NaN
como un valor faltante (más adelante sobre eso )

2.0 Los Atributos (Attributes)

Los objetos R pueden tener atributos, que son como metadatos para el objeto. Estos metadatos pueden ser muy
útiles porque ayudan a describir el objeto. Por ejemplo, los nombres de columna en un dataframe, ayudan a
decirnos qué datos están contenidos en cada una de las columnas. Algunos ejemplos de atributos de objeto R son

• names, dimnames
• dimensions (e.g. matrices, arrays)
• class (e.g. integer, numeric)
• length
• otros atributos / metadatos definidos por el usuario
Se puede acceder a los atributos de un objeto (si los hay) utilizando la función atributos (). No todos los objetos R
contienen atributos, en cuyo caso la función atributos () devuelve NULL.

3.o Creación de Vectores

La función c () se puede usar para crear vectores de objetos concatenando cosas juntas.

> x <- c(0.5, 0.6) ## numeric

> x <- c(TRUE, FALSE) ## logical

> x <- c(T, F) ## logical

> x <- c(«a», «b», «c») ## character

> x <- 9:29 ## integer

> x <- c(1+0i, 2+4i) ## complex

Tenga en cuenta que en el ejemplo anterior, T y F son formas abreviadas de especificar TRUE y FALSE. Sin embargo, en general, se debe intentar utilizar los valores TRUE y FALSE explícitos al indicar valores lógicos.
Los valores T y F están ahí principalmente para cuando quieres hacer abreviaciones en la sentencia. También puede usar la función vector () para inicializar vectores.

> x <- vector(«numeric», length = 10)

> x

[1] 0 0 0 0 0 0 0 0 0 0

Mezclando Objetos

Hay ocasiones en las que se mezclan diferentes clases de objetos R. A veces esto pasa por accidente, pero también puede suceder a propósito. Entonces, ¿qué sucede con el siguiente código?

> y <- c(1.7, «a») ## character

> y <- c(TRUE, 2) ## numeric

> y <- c(«a», TRUE) ## character

En cada caso anterior, estamos mezclando objetos de dos clases diferentes en un vector. Pero recuerda eso
la única regla sobre vectores dice que esto no está permitido. Cuando se mezclan diferentes objetos en un vector,
la coerción ocurre de modo que todos los elementos del vector sean de la misma clase.
En el ejemplo anterior, vemos el efecto de la coerción implícita. Lo que R intenta hacer es encontrar una manera de
representar todos los objetos del vector de forma razonable. A veces esto hace exactamente lo que quieres y … a veces no. Por ejemplo, combinar un objeto numérico con un objeto de carácter creará un vector de caracteres, porque los números generalmente se pueden representar fácilmente como cadenas.

El Concepto de la COERCIÓN

Los objetos se pueden forzar explícitamente de una clase a otra usando las funciones as. *, Si están disponibles.

> x <- 0:6

> class(x)

[1] «integer»

> as.numeric(x) [

1] 0 1 2 3 4 5 6

> as.logical(x)

[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE

> as.character(x)

[1] «0» «1» «2» «3» «4» «5» «6»

A veces, R no puede descubrir cómo coaccionar un objeto y esto puede resultar en la producción de NA.

> x <- vector(«numeric», length = 10)

> x <- c(«a», «b», «c»)

> as.numeric(x) Warning: NAs introduced by coercion

[1] NA NA NA

> as.logical(x)

[1] NA NA NA

> as.complex(x) Warning: NAs introduced by coercion

[1] NA NA NA

Cuando se produce una coerción sin sentido, normalmente recibirás una advertencia de R.

4.0 Creación de Matrices

Las matrices son vectores con un atributo de dimensión. El atributo de dimensión es en sí mismo un vector entero
de longitud 2 (número de filas, número de columnas)

> m <- matrix(nrow = 2, ncol = 3)

> m

[,1] [,2] [,3]

[1,] NA NA NA

[2,] NA NA NA

> dim(m)

[1] 2 3

> attributes(m)

$dim [1] 2 3

Las matrices se construyen en columnas, por lo que se puede pensar que las entradas comienzan en la esquina «superior izquierda»y corriendo por cada columnas una a una hacia bajo. Es un orden vertical

> m <- matrix(1:6, nrow = 2, ncol = 3)
> m
[,1] [,2] [,3]
[1,]     1     3    5
[2,]    2     4    6

Las matrices también se pueden crear directamente a partir de vectores agregando un atributo de dimensión.

> m <- 1:10
> m
[1] 1 2 3 4 5 6 7 8 9 10
> dim(m) <- c(2, 5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,]    1     3     5     7     9
[2,]    2    4     6    8    10

Las matrices se pueden crear enlazando columnas o enlazando filas con las funciones cbind () y rbind ().

x <- 1:3
> y <- 10:12
> cbind(x, y)
x   y
[1,]    1 10
[2,]    2 11
[3,]    3 12

> rbind(x, y)
[,1] [,2] [,3]
x    1     2     3
y  10    11   12

5.0 Lists

Las listas (Lists) son un tipo especial de vector que puede contener elementos de diferentes clases. Las listas son un typo de dato muy importante en R y debería llegar a conocerlos bien. Lists(), en combinación con las varias funciones de «apply()» que se describen más adelante, forman una combinación poderosa. Las listas (Lists) se pueden crear explícitamente usando la función list (), que toma un número arbitrario de argumentos.

x <- list(1, «a», TRUE, 1 + 4i)
> x
[[1]]
[1] 1

[[2]]
[1] «a»

[[3]]
[1] TRUE

[[4]]
[1] 1+4i

 

También podemos crear una lista vacía de una longitud preespecificada con la función vector ()

x <- vector(«list», length = 5)
> x
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

6.o Factors (Factores)

Los factores se utilizan para representar datos categóricos y pueden estar ordenados o desordenados. Uno puede pensar en un factor como un vector entero donde cada entero tiene una etiqueta. Los factores son importantes en estadística modelado y son tratados especialmente por funciones de modelado como lm () y glm ().

Usar factores con etiquetas es mejor que usar números enteros porque los factores se describen por sí mismos. Teniendo una variable que tiene valores «Masculino» y «Femenino» es mejor que una variable que tiene valores 1 y 2. Los objetos de factor se pueden crear con la función factor ().

> x <- factor(c(«yes», «yes», «no», «yes», «no»))
> x
[1] yes yes no yes no
Levels: no yes
> table(x)
x
no yes
2    3
> ## Ver la representación subyacente del factor
> unclass(x)
[1] 2 2 1 2 1
attr(,»levels»)
[1] «no» «yes»

A menudo, los factores se crearán automáticamente cuando lea un conjunto de datos usando una función como
read.table (). Esas funciones a menudo crean factores de forma predeterminada cuando encuentran datos que parecen como caracteres o cadenas. El orden de los niveles de un factor se puede establecer usando el argumento de niveles para factor (). Esto puede ser importante en el modelado lineal porque el primer nivel se utiliza como nivel de referencia.

x <- factor(c(«yes», «yes», «no», «yes», «no»))
> x ## Levels are put in alphabetical order
[1] yes yes no yes no
Levels: no yes
> x <- factor(c(«yes», «yes», «no», «yes», «no»),
+ levels = c(«yes», «no»))
> x
[1] yes yes no yes no
Levels: yes no

Los valores faltantes se indican con NA o NaN para q operaciones matemáticas indefinidas.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.