NÚMEROS, ARITMÉTICA, ASIGNACIÓN Y VECTORES

R de Matematicas Básicas

El símbolo del sistema de la consola permite realizar operaciones aritméticas comunes como suma (+), resta (-), multiplicación (*), y división (/). También puedes calcular exponentes (potencias o índices) utilizando el símbolo (^). Para controlar el orden de los cálculos, es posible usar paréntesis ()

Aritmética

En R, se aplican las reglas matemáticas estándar siguiendo el orden habitual de las operaciones de izquierda a derecha: paréntesis, exponentes, multiplicación, división, suma y resta (PEMDAS). Aquí tienes algunos ejemplos

26+32 
## [1] 58
 3^7
## [1] 2187
 14/9
## [1] 1.555556

Puedes calcular la raíz cuadrada de cualquier número no negativo utilizando la función sqrt. Simplemente proporciona el número deseado como argumento a x, como se muestra aquí:

sqrt(x=12)
## [1] 3.464102
 sqrt(x=32.4)
## [1] 5.6921

En R, a menudo es necesario convertir fórmulas aritméticas complejas a código para su evaluación, como al replicar cálculos de libros o investigaciones. Los siguientes ejemplos muestran una fórmula matemática y su ejecución en R.

 (10^4+3*6)/7-3
## [1] 1428.143

Logaritmos y Exponenciale

muchas veces se realisan cambios donde se hacen transformaciones logaritmicas a ciertos dato, Esto se refiere a reescalar los números según el logaritmo. Cuando se le proporciona un número dado x y un valor denominado base, el logaritmo calcula la potencia a la que se debe elevar la base para obtener x. Por ejemplo : el logaritmo de x=243 con base 3

log(x=243,base=3)
## [1] 5

El número de Euler da lugar a la función exponencial, definida como e^x , donde 𝑥puede ser cualquier número (negativo, cero o positivo). La función exponencial, 𝑓(𝑥)=e^𝑥a menudo se escribe como exp(x) y representa la inversa del logaritmo natural. En este código, exp(x) calcula e^x y log(x) calcula el logaritmo natural de x, que tiene como base el número de Euler , ejemplo

 exp(x=3)
## [1] 20.08554
log(x=20.08554)
## [1] 3
342151012900
## [1] 3.42151e+11

Notación científica

Cuando R imprime números grandes o pequeños más allá de un cierto umbral de cifras significativas, establecido en 7 por defecto, los números se muestran utilizando la notación científica clásica con “e”. La notación “e” es común en muchos lenguajes de programación e incluso en muchas calculadoras de escritorio, ya que facilita la interpretación de valores extremos, Consideremos el número 2342151012900 y 0.0000002533

 2342151012900
## [1] 2.342151e+12
0.0000002533
## [1] 2.533e-07

Asignación de objetos

si deseas guardar los resultados y realizar operaciones adicionales, necesitas asignar los resultados de un cálculo a un objeto en el espacio de trabajo actual. En términos simples, esto equivale a almacenar un dato o resultado con un nombre para poder acceder a él más tarde, sin tener que escribir de nuevo ese cálculo, en R, puedes especificar una asignación de dos formas: usando la notación de flecha (<-) o un signo igual (=). Ambas se muestran a continuación.

 x <- -5
x
## [1] -5
x = x + 1
x
## [1] -4
x = x + -8
x
## [1] -12

##vectores A menudo, querrás realizar los mismos cálculos o comparaciones en múltiples elementos, por ejemplo, si estás reescalando mediciones en un conjunto de datos. Podrías realizar este tipo de operación entrada por entrada, aunque esto no es lo ideal, especialmente si tienes un gran número de elementos. R ofrece una solución mucho más eficiente a este problema mediante los vectores.

Creación de un Vector

Un vector en R es una colección de datos relacionados con una sola variable, como alturas o cantidades diarias. Se crea usando la función c(), colocando los elementos separados por comas dentro de los paréntesis.

myvec <- c(1,3,1,42)
 myvec
## [1]  1  3  1 42
con objetos almacenados
 foo <- 32.1
myvec2 <- c(3,-3,2,3.45,1e+03,foo )
myvec2
## [1]    3.00   -3.00    2.00    3.45 1000.00   32.10
con combinacion de vectores
myvec3 <- c(myvec,myvec2)
myvec3
##  [1]    1.00    3.00    1.00   42.00    3.00   -3.00    2.00    3.45 1000.00
## [10]   32.10

Secuencias, Repeticiones, Orden y Longitud en Vectores

En R, hay funciones comunes y útiles asociadas con los vectores que permiten crear secuencias, repetir elementos, ordenar datos y determinar la longitud de un vector. Aquí se introducen las funciones seq, rep, sort y length.

3:29
##  [1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
## [26] 28 29

con un valor previamente almacenado o un cálculo

 foo <- 5.3
 bar <- foo:(-47+1.5)
 bar
##  [1]   5.3   4.3   3.3   2.3   1.3   0.3  -0.7  -1.7  -2.7  -3.7  -4.7  -5.7
## [13]  -6.7  -7.7  -8.7  -9.7 -10.7 -11.7 -12.7 -13.7 -14.7 -15.7 -16.7 -17.7
## [25] -18.7 -19.7 -20.7 -21.7 -22.7 -23.7 -24.7 -25.7 -26.7 -27.7 -28.7 -29.7
## [37] -30.7 -31.7 -32.7 -33.7 -34.7 -35.7 -36.7 -37.7 -38.7 -39.7 -40.7 -41.7
## [49] -42.7 -43.7 -44.7

Secuencias con seq

También puedes usar el comando seq, que permite crear secuencias de manera más flexible. Esta función lista toma un valor de inicio (from), un valor final (to) y un valor de paso (by), y devuelve la secuencia correspondiente como un vector numérico.

 seq(from=3,to=27,by=3)
## [1]  3  6  9 12 15 18 21 24 27

Si prefieres una secuencia con un número específico de elementos, puedes usar el argumento length.out para generar una secuencia con esa cantidad de números, distribuidos uniformemente entre los valores from y to.

seq(from=3,to=27,length.out=40)
##  [1]  3.000000  3.615385  4.230769  4.846154  5.461538  6.076923  6.692308
##  [8]  7.307692  7.923077  8.538462  9.153846  9.769231 10.384615 11.000000
## [15] 11.615385 12.230769 12.846154 13.461538 14.076923 14.692308 15.307692
## [22] 15.923077 16.538462 17.153846 17.769231 18.384615 19.000000 19.615385
## [29] 20.230769 20.846154 21.461538 22.076923 22.692308 23.307692 23.923077
## [36] 24.538462 25.153846 25.769231 26.384615 27.000000

Para secuencias decrecientes, el valor de by debe ser negativo. Aquí tienes un ejemplo:

 foo <- 5.3
 myseq <- seq(from=foo,to=(-47+1.5),by=-2.4)
 myseq
##  [1]   5.3   2.9   0.5  -1.9  -4.3  -6.7  -9.1 -11.5 -13.9 -16.3 -18.7 -21.1
## [13] -23.5 -25.9 -28.3 -30.7 -33.1 -35.5 -37.9 -40.3 -42.7 -45.1

el uso de length.out para crear secuencias decrecientes sigue siendo el mismo (no tendría sentido especificar una “longitud negativa”). Para los mismos valores de from y to, puedes crear fácilmente una secuencia decreciente

 myseq2 <- seq(from=foo,to=(-47+1.5),length.out=5)
myseq2
## [1]   5.3  -7.4 -20.1 -32.8 -45.5

Repetición con rep

Las secuencias son muy útiles, pero a veces puede que solo desees repetir un valor específico. Para esto se utiliza rep.

rep(x=1,times=4)
## [1] 1 1 1 1
 rep(x=c(3,62,8.3),times=3)
## [1]  3.0 62.0  8.3  3.0 62.0  8.3  3.0 62.0  8.3

Al igual que con seq, puedes incluir el resultado de rep en un vector del mismo tipo de datos, como se muestra en el siguiente ejemplo:

foo <- 4
 c(3,8.3,rep(x=32,times=foo),seq(from=-2,to=1,length.out=foo+1))
##  [1]  3.00  8.30 32.00 32.00 32.00 32.00 -2.00 -1.25 -0.50  0.25  1.00

Ordenar con sort

Ordenar un vector en orden creciente o decreciente de sus elementos es otra operación simple que aparece en tareas cotidianas. La función convenientemente llamada sort hace justamente eso.

 sort(x=c(2.5,-1,-10,3.44),decreasing=FALSE)
## [1] -10.00  -1.00   2.50   3.44
sort(x=c(2.5,-1,-10,3.44),decreasing=TRUE)
## [1]   3.44   2.50  -1.00 -10.00

Encontrar la longitud de un vector con length

la función length, que determina cuántas entradas existen en un vector dado como argumento x.

 length(x=c(3,2,8,1))
## [1] 4
length(x=5:13)
## [1] 9

Subconjuntos y extracción de elementos

Supón que tienes un vector llamado myvec en tu espacio de trabajo. Entonces, habrá exactamente length(x=myvec) entradas en myvec, y cada entrada tendrá una posición específica: 1, 2, 3, hasta length(x=myvec). Puedes acceder a los elementos individuales pidiéndole a R que devuelva los valores de myvec en ubicaciones específicas, lo cual se hace escribiendo el nombre del vector seguido de la posición entre corchetes.

 myvec <- c(5,-2.3,4,4,4,6,8,10,40221,-8)
length(x=myvec)
## [1] 10
 myvec[1]
## [1] 5
foo <- myvec[2]
foo
## [1] -2.3