En esta leccion, vamos a explorar algunos elementos basicos de la programacion en R.

Este material esta basado en la leccion de “Basic_building_blocks” de “R Programming”, paquete swirl.Author: Nick Carchedi, Organization: JHU Biostat, Version: 2.2.0.

Comencemos ahora!

Si en algun momento desea obtener mas informacion sobre un tema concreto relacionado con R, puede escribir help.start ( ) en la consola. Como alternativa, una simple busqueda en Internet a menudo da la respuesta que esta buscando.

En su forma mas simple, R puede ser utilizado como una calculadora interactiva. Escriba 5 + 7 y haga clic en Enter.

5 + 7
## [1] 12

R simplemente imprime el resultado de 12 por defecto. Sin embargo, R es un lenguaje de programacion y, a menudo la razon de utilizar un lenguaje de programacion en lugar de una calculadora es automatizar algun proceso o evitar repeticiones innecesarias. En este caso, es posible que desee utilizar el resultado de arriba en un segundo calculo. Entonces en lugar de volver a escribir 5 + 7 cada vez que lo necesitamos, podemos simplemente crear una nueva variable que almacena el resultado. La forma de asignar una variable en R es usando el operador de asignacion, es decir el simbolo ‘’menos que’‘seguido por el simbolo de’‘menos’’. En otras palabras <- .

Para asignar el resultado de 5 + 7 a una nueva variable x, escriba “x <-5 + 7”. Puede leerse como ‘x toma el valor de 5 mas 7’. Pruebe ahora. Es importante incluir un espacio simple a cada lado del operador de asignación, pero NO incluya espacios entre el < y el - que forman la flecha.

x <- 5 + 7

Se dara cuenta de que R no imprime el resultado de 12. Cuando utiliza el operador de asignacion, R asume que no quiere ver el resultado inmediatamente, sino que tiene la intencion de utilizar el resultado mas adelante.

Para ver el contenido de la variable x, solo tiene que escribir x y pulsar Enter. Intente ahora.

x
## [1] 12

Ahora, almacene el resultado de “x - 3” en una nueva variable llamada y. Puede tambien utilizar x - 3 o x-3 (es decir con o sin espacio), pero es una buena costumbre de incluir un espacio a cada lado de la asignacion operador.

y <- x - 3
y
## [1] 9

Ahora, vamos a crear una pequena coleccion de numeros llamados un vector. Cualquier objeto que contiene datos es una estructura de datos numericos y los vectores son la estructura de datos mas simple en R. De hecho, incluso un solo numero se puede considerar un vector de longitud uno.

La forma mas facil de crear un vector es con la funcion c(), que se usa para ‘concatenar’ o ‘combinar’. Para crear un vector que contiene los numeros 1.1, 9, y 3.14, escriba c(1,1, 9, 3.14). Pruebe ahora y guarde el resultado en una variable llamada z. El incluir espacios despues de las comas en el vector no es necesario, pero ayuda a que el codigo sea menos desordenado y mas legible.

Luego escriba z para ver su contenido. Tenga en cuenta que no hay comas que separan los valores en la salida.

z <- c(1.1, 9, 3.14)
z
## [1] 1.10 9.00 3.14

Recuerde que en cualquier momento si tiene preguntas acerca de una funcion en particular puede acceder a los archivos de ayuda a traves de la orden ‘?’. Por ejemplo, si desea mas informacion en la funcion c(), escriba “?c”" sin los parentesis que normalmente siguen una funcion. Pruebe ahora.

?c
## starting httpd help server ... done

Puede combinar vectores para hacer un nuevo vector. Cree un nuevo vector que contiene z, 555, luego z otra vez (en ese orden z,555,z). En este caso no asigne este vector a una nueva variable para asi ver el resultado inmediatamente.

c(z, 555, z)
## [1]   1.10   9.00   3.14 555.00   1.10   9.00   3.14

Los vectores numericos se pueden utilizar en expresiones aritmeticas. Escriba lo siguiente para ver lo que sucede: z * 2 + 100. El simbolo * se utiliza para la multiplicacion.En este caso R primero multiplica cada uno de los tres elementos en z por 2. Entonces se suma 100 a cada elemento para obtener el resultado que ve arriba.

Otros operadores aritmeticos comunes son +, -,/y^(donde x ^ 2 significa ‘x al cuadrado’). Para calcular la raiz cuadrada, utilice la funcion sqrt () y para el valor absoluto, utilice la funcion abs ().

z * 2 + 100
## [1] 102.20 118.00 106.28

Calcule la raiz cuadrada de z - 1 y asignelo a una nueva variable llamada my_sqrt. Antes de ver el contenido de la variable my_sqrt, ¿Cuantos elementos cree que tiene el vector? 1- un vector de longitud 3; 2- un solo numero (es decir, un vector de longitud 1);3- un vector de longitud 0 (es decir, un vector vacio)

my_sqrt <- sqrt(z - 1)

Imprima el contenido de my_sqrt.

Como habra adivinado, R primero resta 1 de cada elemento de z, luego calcula la raiz cuadrada de cada elemento. Esto deja un vector de la misma longitud que el vector z original.

my_sqrt
## [1] 0.3162278 2.8284271 1.4628739

Ahora, cree una nueva variable llamada my_div que contenga el valor de z dividido por my_sqrt. Los espacios a ambos lados de / no son necesarios, pero puede mejorar la legibilidad haciendo el codigo aparezca mas despejado.

my_div <- z / my_sqrt
my_div
## [1] 3.478505 3.181981 2.146460

Cuando se dispone de dos vectores de la misma longitud, R simplemente realiza la operacion aritmetica especificada (+, -,*, etc.) elemento por elemento. Pero si los vectores son de diferentes longitudes, R ‘recicla’ el vector mas corto hasta que es de la misma longitud que el vector mas largo. Cuando hicimos z * 2 + 100 en el ejemplo anterior, z fue un vector de longitud 3, pero tecnicamente 2 y 100 son cada uno de vectores de longitud 1.

Detras de escena, R “recicla” el vector 2 para hacer un vector con 3 elementos “2” y el vector 100 para hacer un vector con 3 elementos “100”. En otras palabras, cuando se indica a R que calcule z * 2 + 100, en realidad calcula: z * c(2, 2, 2) + c(100, 100, 100).’

Para ver otro ejemplo sobre el “reciclado” de vectores, prueba sumar los vectores c(1, 2, 3, 4) y c(0, 10). No es necesario guardar el resultado en una variable.

c(1, 2, 3, 4) + c(0, 10)
## [1]  1 12  3 14

Si la longitud del vector mas corto no se divide uniformemente en la longitud del vector mas largo, R aplicara el metodo “reciclado”, pero enviara una advertencia para hacer saber algo sospechoso podria estar pasando. Pruebe c(1, 2, 3, 4) + c(0, 10, 100) como otro ejemplo.

c(1, 2, 3, 4) + c(0, 10, 100)
## Warning in c(1, 2, 3, 4) + c(0, 10, 100): longer object length is not a
## multiple of shorter object length
## [1]   1  12 103   4

Antes de concluir esta leccion, me gustaria mostrarle un par de trucos para ahorrar tiempo.

A principios de la leccion calculo z * 2 + 100. Hagamos de cuenta que ha cometido un error y que se referia a anadir 1000 en lugar de 100. Usted podria volver a escribir la expresion, o … En muchos entornos de programacion, se usa la flecha hacia arriba. Presione la flecha hacia arriba en el teclado hasta que se llega a este comando (z * 2 + 100), a continuacion, cambie de 100 a 1000 y pulse Enter. Si la flecha hacia arriba no funciona escriba el comando corregido.

Finalmente, supongamos que quiere ver el contenido de una variable creada anteriormente pero no recuerda si su nombre es my_div or myDiv. Entonces puede probar ambos y ver que sucede o….Puede tipear las dos primeras letras del nombre de la variable, y apretar la tecla TAB (posiblemente mas de una vez).

Ha llegado al final de esta leccion!