Saltar al contenido principal
LibreTexts Español

3.1: Una introducción

  • Page ID
    55159
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    El lenguaje de programación R tiene una rica historia, trazando sus raíces al lenguaje S originalmente desarrollado para la computación estadística a mediados de la década de 1970 en (¿dónde más?) Laboratorios Bell. Posteriormente, el proyecto R de código abierto amplió las capacidades de S al tiempo que incorporaba características de lenguajes como LISP y Scheme.

    Muchas características de R se comparten con Python: ambas son lenguajes interpretados de alto nivel. (Para una discusión de lenguajes interpretados vs. compilados, véase el capítulo 13, “Hola, Mundo”.) Ambos lenguajes proporcionan una amplia gama de características y funciones para tareas comunes, y ambos lenguajes están reforzados por una asombrosa variedad de paquetes adicionales para análisis más especializados. Superficialmente, gran parte de su sintaxis es similar, aunque debajo de la superficie se encuentran diferencias significativas (y fascinantes).

    Prácticamente, la principal diferencia entre los dos idiomas radica en qué características y funciones incorporadas están disponibles, y qué paquetes están disponibles para descargar. Donde Python es considerado un lenguaje de “propósito general”, R se especializa en análisis estadísticos. ¿Necesita construir un modelo mixto no lineal para una tabla grande de valores numéricos a partir de un experimento multifactorial? R es probablemente la herramienta de elección. ¿Necesitas contar los motivos promotores potenciales en un conjunto de secuencias grandes? Python es probablemente un mejor candidato. R admite la funcionalidad para los tipos de análisis de cadenas cubiertos en la sección sobre Python (como el análisis de secuencias de ADN y expresiones regulares), pero actualmente son más fáciles de trabajar con ellos en Python. Python proporciona un excelente trazado de datos a través de la biblioteca matplotlib, pero la biblioteca ggplot2 de R se convirtió rápidamente en una de las herramientas dominantes para la visualización de datos desde su lanzamiento inicial en 2005.

    En lo que se refiere al análisis de datos biológicos, ambas lenguas han crecido rápidamente. Los paquetes bioconductores en R proporcionan muchas herramientas bioinformáticas estadísticas, mientras que BioPython se enfoca en algunos métodos estadísticos y muchos métodos orientados a secuencias, como el alineamiento múltiple. Al momento de escribir esto, ambos lenguajes parecen dirigirse hacia un conjunto de características comunes: paquetes Python relativamente recientes como pandas, numpy, scipy y statsmodels agregan funcionalidad que ha estado presente en R durante décadas, mientras que R ha crecido en general funcionalidad y popularidad. Por ahora, sin embargo, ambos idiomas todavía hacen grandes adiciones al repertorio de un biólogo computacional, y ambos son apoyados por comunidades grandes y comprometidas.

    Entonces, ¿cuál de estos dos lenguajes (y por supuesto Python y R están lejos de ser las únicas dos opciones) debería aprender primero un aspirante a biólogo computacional? Bueno, la colocación de Python en este libro no es casualidad. Para la mayoría de los usuarios, Python es una mejor “experiencia de programación introductoria”, aunque la experiencia sea breve, por un par de razones. Primero, gran parte de Python se diseñó pensando en la educación y la facilidad de uso, facilitando la transición al pensamiento computacional y explicando su popularidad actual en los departamentos de Ciencias de la Computación de todo el mundo. En segundo lugar, Python comparte más similitud con otros lenguajes “convencionales” como Java, C y C++ que R, facilitando la transferencia de conceptos en caso de que uno desee continuar en el viaje de programación. Además, R contiene una colección mucho más grande de tipos de datos y sintaxis especializada para trabajar con ellos, así como múltiples marcos para cosas como la asignación de variables y la orientación de objetos. Podría decirse que los programadores R efectivos tienen más que tener en cuenta a medida que funcionan.

    R es un lenguaje notablemente flexible. Con tanta flexibilidad viene tanto el poder como las interesantes formas de pensar sobre la programación. Si bien Python enfatiza el uso de for-loops y sentencias if para controlar el flujo del programa, R proporciona una sintaxis alternativa para la manipulación de datos a través de declaraciones lógicas sofisticadas. (Los bucles for-y las declaraciones if se discuten al final de esta sección.) Las funciones son bastante importantes en Python, pero en R adquieren tal importancia que se nos exige pensar en ellas a un nivel superior (como tipos de datos que pueden ser operados por otras funciones). Para muchas de las tareas estadísticas en las que R sobresale, el código de intérprete subyacente está altamente optimizado o paralelizado para que los análisis de millones o miles de millones de puntos de datos se puedan completar rápidamente. Por último, muchos paquetes excelentes están disponibles solo para R.

    Sin embargo, en última instancia, la respuesta a “¿qué idioma debo aprender?” es tan dinámico como “¿qué idioma debo usar?” Hay buenos argumentos que hacer a favor (y en contra) de todas las herramientas, y los tipos de habilidades que deseas adquirir y las necesidades situacionales jugarán un papel importante en un momento dado. Algunos consejos: eventualmente, aprender a programar en múltiples idiomas. ¡Los beneficios de aprender más de un idioma están fácilmente a la par con aprender a programar en primer lugar!

    Hola, Mundo

    R es un lenguaje interpretado, lo que significa que un programa R es un archivo de texto (o múltiples archivos de texto, en algunos casos) con comandos que son interpretados por otro programa que interactúa con la CPU y la RAM a través del sistema operativo. En la línea de comandos, el intérprete R es simplemente R, que podemos ejecutar y enviar comandos a uno a la vez.

    III.1_1_R_1_R_CMD_Hola

    Cuando terminemos de trabajar con el intérprete R de esta manera, podemos ejecutar quit (save = “no”) para salir, instruyendo que no se deben guardar los datos temporales que no hayamos guardado ya explícitamente.

    III.1_2_R_2_R_CMD_QUIT

    Ocasionalmente necesitaremos trabajar con el intérprete R de esta manera, particularmente cuando necesitamos instalar paquetes. En su mayor parte, sin embargo, ejecutaremos programas R como scripts ejecutables, al igual que hicimos para Python. En este caso, utilizamos el intérprete Rscript a través del familiar #! /usr/bin/env Línea Rscript, que como siempre debe ser la primera línea del archivo. (Consulte el capítulo 5, “Permisos y ejecutables”, para obtener más información sobre la creación de archivos de script ejecutables en la línea de comandos).

    III.1_3_R_3_RScript_Nano

    Al igual que con otros tipos de script, podemos hacer que este script sea ejecutable con chmod y ejecutarlo.

    III.1_4_R_4_RScript_execute

    RStudio

    La programación en R en la línea de comandos funciona tan bien como cualquier otro lenguaje, pero la forma más común de programar en R hoy en día es utilizando un entorno de desarrollo integrado (IDE) conocido como RStudio. Los IDE gráficos como RStudio ayudan al programador a escribir código, administrar los diversos archivos asociados a un proyecto y proporcionar sugerencias y documentación durante el proceso de programación. Muchos IDE (como Eclipse y Xcode) son piezas complicadas de software por derecho propio. El IDE de RStudio es moderadamente complejo, pero los desarrolladores han trabajado duro para enfocarse en la facilidad de uso específicamente para el lenguaje de programación R. Está disponible para Windows, OS X y Linux, en http://rstudio.com. La instalación de RStudio requiere primero instalar el intérprete R desde http://www.r-project.org.

    III.1_5_rstudio_primero

    Cuando se abre por primera vez, RStudio presenta tres paneles. A la izquierda está la misma interfaz con el intérprete que vimos ejecutando R en la línea de comandos. En la parte inferior derecha hay un panel que presenta pestañas para un navegador de archivos, un navegador de ayuda y un panel donde se pueden ver los gráficos. El panel superior derecho muestra el historial de comandos que el intérprete ha ejecutado desde que se abrió y el “entorno global”, ilustrando cierta información sobre qué variables y datos el intérprete tiene almacenados actualmente en la memoria.

    ¡Ninguno de estos tres paneles, sin embargo, es el que nos interesa principalmente! Para abrir el panel más importante, necesitamos crear un nuevo archivo “R script”, un archivo de texto de comandos R, al igual que el script ejecutable en la línea de comandos. Para ello, utilizamos el botón con un signo más verde.

    III.1_6_RStudio_Nuevo_RScript

    El nuevo panel es un editor para nuestro archivo de código. Aquí hemos ingresado tres líneas de código (¡una línea como #! /usr/bin/env Rstudio solo es necesario para ejecutar scripts R en la línea de comandos).

    III.1_7_rstudio_hello_world

    El panel del editor de archivos contiene una serie de botones, cuatro de los cuales vale la pena discutir de inmediato. Primero, el botón guardar (el pequeño disquete azul) guarda el archivo: los archivos de script R tradicionalmente obtienen la extensión de archivo .R. Más a la derecha, el botón Ejecutar envía la sección resaltada de código a la ventana del intérprete, aunque esa sección sea de varias líneas (las cuales son ejecutadas por el intérprete en secuencia, como ocurre con la mayoría de los idiomas). El siguiente botón (con la flecha azul loopy) vuelve a ejecutar la sección de código ejecutada más recientemente, aunque no esté resaltada. Por último, el botón Source ejecuta todo el código del archivo, al igual que lo haría la versión Rscript en la línea de comandos. Las salidas de Run y Source se muestran en el panel intérprete a continuación, en texto negro.

    Tenga en cuenta que el botón Ejecutar permite al programador ejecutar líneas de código fuera de su orden natural; podríamos ejecutar fácilmente las líneas 2, 3 y 4 en ese orden (resaltándolas con el mouse y haciendo clic en Ejecutar) como podríamos 4 seguido de 3 seguido de 2 (resaltando y ejecutando cada uno a su vez). ¡Resulta que los programas suelen ser sensibles al orden en que se ejecutan las líneas de código! Entonces, en la medida de lo posible, evita el botón Ejecutar y en su lugar usa el botón Fuente. Esto significa que las secciones de código se volverán a ejecutar a medida que desarrolle sus programas. El beneficio es que puede estar seguro de que su código también se ejecutará en un entorno que no sea de RStudio, y será menos probable que cree código confuso. [1] En su mayor parte, no vamos a ilustrar código directamente en RStudio, sino más bien como simples archivos de texto y fragmentos de ellos.

    Bibliotecas/Paquetes

    Si bien una instalación predeterminada del intérprete R incluye una gran cantidad de funciones y paquetes, muchas bibliotecas adicionales se han puesto a disposición en CRAN (la Comprehensive R Archive Network), proporcionando nuevas funciones importantes. Afortunadamente, instalar estas bibliotecas desde CRAN es fácil y requiere solo el intérprete R interactivo y una conexión a internet. [2]

    Como ejemplo, instalaremos el paquete stringr, que proporciona funciones adicionales para trabajar con tipos de datos similares a caracteres (este será el primer paquete adicional que necesitaremos en capítulos posteriores). Para instalarlo en la consola interactiva R, necesitamos ejecutar install.packages (“stringr”). Se le puede preguntar si el paquete debe estar instalado en una “biblioteca personal” y si crear dicha biblioteca personal, a lo que puede responder y. También se le puede solicitar que seleccione una ubicación geográfica cercana desde la que descargar el paquete, también conocido como “espejo”.

    Una vez instalado el paquete, usarlo en un script R es tan fácil como llamar primero a la biblioteca (“stringr”) o a la biblioteca (stringr), después de lo cual están disponibles las funciones proporcionadas por la biblioteca. En este ejemplo, estamos usando la función str_split () proporcionada por el paquete stringr; la salida impresa sería “Hello” “world” en lugar de “Hello world”.

    III.1_8_R_4_2_RScript_execute

    Tenga en cuenta que install.packages () necesita ejecutarse solo una vez por paquete, y generalmente debe hacerse en el intérprete R interactivo. La función library () necesitará ser utilizada (una vez) para cada biblioteca en cada script R que la use. Estas llamadas generalmente se recopilan cerca de la parte superior del guión.

    Ejercicios

    1. Si estás trabajando en la línea de comandos, crea un archivo ejecutable interpretado por Rscript y haz que imprima alguna información. Si prefieres probar RStudio, instálalo y crea un nuevo script R, haciendo que imprima varias líneas de texto y usando el botón Source para ejecutar todo el script. Experimenta también con los botones “Run” y “Re-Run”.
    2. Si estás trabajando en RStudio, usa la interfaz para crear un nuevo “Proyecto” (representado por un directorio en el sistema de archivos que contiene datos, scripts R y otros archivos relacionados con un proyecto de análisis) y crea varios scripts R. Para uno de los scripts que cree, intente hacer clic en el icono “Compilar Cuaderno” (parece un pequeño bloc de notas) para crear un informe HTML, y guárdelo en el directorio del proyecto.
    3. Si está utilizando RStudio, intente crear un nuevo archivo “R Markdown” en lugar de un archivo de script R. Los archivos R Markdown le permiten mezclar “trozos” de código R junto con la documentación de texto, que luego se puede “tejer” en un informe HTML muy bien formateado. Guarde el informe en el directorio del proyecto.
    4. Instale la biblioteca stringr a través de la consola interactiva y escriba un script que utilice la función str_split () en ella. Si está utilizando RStudio, también se pueden instalar bibliotecas en la pestaña “Paquetes” de la interfaz de RStudio.

    1. Por otro lado, algunas secciones de código pueden funcionar durante muchos minutos o incluso horas, por lo que podría considerar cuidadosamente evitar volver a ejecutar esas secciones de código cuando sea necesario.
    2. En R, los términos “biblioteca” y “paquete” se utilizan frecuentemente como sinónimos, pero técnicamente son distintos. La biblioteca es el directorio donde se almacenan los paquetes (colecciones de código y datos que proporcionan la funcionalidad).

    This page titled 3.1: Una introducción is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Shawn T. O’Neil (OSU Press) .