Saltar al contenido principal
LibreTexts Español

1.2: Los fundamentos de trabajar con R

  • Page ID
    69333
  • \( \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}}\)

    Comunicarse con R

    El símbolo > en la consola es el símbolo del sistema, que indica que R está esperando sus instrucciones. Cuando escribe un comando en la consola y presiona Enter o Return, R ejecuta el comando y muestra cualquier salida apropiada en la consola; así, este comando agrega los números 1 y 3

    1 + 3

    y devuelve el número 4 como respuesta.

    [1] 4

    Nota

    El texto anterior es un bloque de código que contiene la línea de código para ingresar a la consola y la salida generada por R. El símbolo del sistema (>) no está incluido aquí para que pueda, si lo desea, copiar y pegar el código en R; si está copiando y pegando el código, no incluya la salida o R devolverá un mensaje de error. Tenga en cuenta que la salida aquí va precedida por el número 1 entre paréntesis, que es el número id del primer valor devuelto en esa línea.

    Todo esto está bien, pero es incluso menos útil que una calculadora porque no podemos operar más sobre el resultado. Si asignamos este cálculo a un objeto usando un operador de asignación, entonces el resultado del cálculo permanece disponible para nosotros.

    Hay dos operadores comunes de asignación hacia la izquierda en R: una flecha que apunta de derecha a izquierda, <-, lo que significa que el valor de la derecha está asignado al objeto de la izquierda, y un signo igual, =. La mayoría de las guías de estilo para R favorecen <- over =, pero como = es la opción más común en la mayoría de los otros lenguajes de programación, como Python, C++ y Matlab, la usaremos aquí.

    Si asignamos nuestro cálculo a la respuesta del objeto entonces el resultado del cálculo se asigna al objeto pero no se nos devuelve. Para ver el valor de un objeto podemos buscarlo en el Panel de Entorno de RStudio o ingresar el nombre del objeto como comando en la Consola, como se muestra aquí.

    respuesta = 1 + 3

    responder

    [1] 4

    Tenga en cuenta que el nombre de un objeto diferencia entre mayúsculas y minúsculas, así que answer y Answer

    Respuesta = 2 + 4

    Contestar

    [1] 6

    Nota

    Solo hay algunas limitaciones a los nombres que puedes asignar a los objetos: pueden incluir letras (tanto mayúsculas como minúsculas), números, puntos (. ), o subrayados (_), pero no espacios. Un nombre puede comenzar con una letra o con un punto seguido de una letra (pero no un punto seguido de un número). Aquí hay algunos ejemplos de nombres válidos

    answerone respuesta_una respuesta1 respuestaUna respuesta.one

    y ejemplos de nombres inválidos

    1stanswer respuesta* primera respuesta

    Te resultará útil usar nombres que te recuerden el significado del objeto y que no sean demasiado largos. Mi preferencia personal es usar todas las letras minúsculas, usar un sustantivo descriptivo y separar palabras usando un guión bajo ya que encuentro que estas elecciones hacen que mi código sea más fácil de leer. Cuando me resulta útil usar el mismo nombre base para varios objetos de diferentes tipos, entonces puedo agregar una designación de dos o tres letras al nombre similar a las extensiones que designan, por ejemplo, una hoja de cálculo almacenada como un archivo.csv. Por ejemplo, cuando uso R para ejecutar una regresión lineal basada en la ley de Beer, puedo almacenar las concentraciones y absorbancias de mis estándares en un marco de datos (ver a continuación para una descripción de los marcos de datos) con un nombre como zinc.df y almacenar la salida del modelo lineal (ver Capítulo 8 para una discusión de lineal modelos) en un objeto con un nombre como zinc.lm.

    Objetos para almacenar datos

    En el código anterior, answer y Answer son objetos que almacenan un solo valor numérico. Hay varios tipos diferentes de objetos que podemos usar para almacenar datos, incluidos vectores, marcos de datos, matrices y matrices, y listas.

    Vectores

    Un vector es una colección ordenada de elementos del mismo tipo, que pueden ser valores numéricos, valores enteros, valores lógicos o cadenas de caracteres. Tenga en cuenta que ordenado no implica que los valores estén ordenados de menor a mayor o de mayor a menor, o en orden alfabético; simplemente significa que los elementos del vector se almacenan en el orden en que los ingresamos en el objeto. La longitud de un vector es el número de elementos que contiene. Los objetos answer y Answer, por ejemplo, son vectores con longitudes de 1.

    longitud (respuesta)

    [1] 1

    La mayoría de los vectores que usaremos incluyen múltiples elementos. Una forma de crear un vector con múltiples elementos es usar la función de concatenación, c ().

    Nota

    En los bloques de código de abajo y en otros lugares, cualquier texto que siga un hashtag, #, es un comentario que explica lo que está logrando la línea de código; los comentarios no son código ejecutable, por lo que R simplemente los ignora.

    Por ejemplo, podemos crear un vector de valores numéricos,

    v00 = c (1.1, 2.2, 3.3)

    v00

    [1] 1.1 2.2 3.3

    o un vector de números enteros,

    v01 = c (1, 2, 3)

    v01

    [1] 1 2 3

    o un vector de valores lógicos,

    v02 = c (VERDADERO, VERDADERO, FALSO) # también podríamos ingresar esto como c (T, T, F)

    v02

    [1] VERDADERO TRUE FAL

    o un vector de cadenas de caracteres

    v03 = c (“alfa”, “bravo”, “charley”)

    v03

    [1] “alfa” “bravo” “charley”

    Puede ver la estructura de un objeto examinándolo en el Panel de Entorno o usando el comando structure de R, str () que, por ejemplo, identifica el vector el v02 como un vector lógico con un índice para sus entradas de 1, 2 y 3, y con valores de VERDADERO, VERDADERO y FALSO.

    str (v02)

    logi [1:3] VERDADERO TRUE FALSO

    Podemos usar el índice de un vector para corregir errores, agregar valores adicionales o crear un nuevo vector usando vectores ya existentes. Obsérvese que el número entre corchetes, [], identifica el elemento en el vector de interés. Por ejemplo, la ortografía correcta para el tercer elemento en v03 es charlie, no charley; podemos corregir esto usando la siguiente línea de código.

    v03 [3] = “charlie” # corrige el tercer valor del vector

    v03

    [1] “alfa” “bravo” “charlie”

    También podemos usar el corchete para agregar un nuevo elemento a un vector existente,

    v00 [4] = 4.4 # agregar un cuarto elemento al vector existente, aumentando su longitud

    v00

    [1] 1.1 2.2 3.3 4.4

    o para crear un nuevo vector usando elementos de otros vectores.

    v04 = c (v01 [1], v02 [2], v03 [3])

    v04

    [1] “1" “VERDADERO” “Charlie”

    Tenga en cuenta que los elementos de v04 son cadenas de caracteres a pesar de que v01 contiene enteros y v02 contiene valores lógicos. Esto se debe a que los elementos de un vector deben ser del mismo tipo, por lo que R los coacciona a un tipo común, en este caso un vector de cadenas de caracteres.

    Aquí hay varias formas de crear un vector cuando sus entradas siguen una secuencia definida, seq (), o usan un patrón repetitivo, rep ().

    v05 = seq (de = 0, a = 20, por = 4)

    v05

    [1] 0 4 8 12 16 20

    v06 = seq (0, 10, 2) # R asume que los valores se proporcionan en el orden de, a, y por

    v06

    [1] 0 2 4 6 8 10

    v07 = rep (1:4, times = 2) # repite el patrón 1, 2, 3, 4 dos veces

    v07

    [1] 1 2 3 4 1 2 3 4

    v08 = rep (1:4, each = 2) # repite cada elemento de la cadena dos veces antes de pasar al siguiente elemento

    v08

    [1] 1 1 2 2 3 3 4 4 4

    Nota

    Tenga en cuenta que 1:4 es equivalente a c (1, 2, 3, 4) o seq (1, 4, 1). En R muchas veces es el caso de que hay múltiples formas de lograr lo mismo!

    Finalmente, podemos completar operaciones matemáticas usando vectores, hacer consultas lógicas de vectores y crear submuestras de vectores.

    v09 = v08 - v07 # restar dos vectores, que deben ser de igual longitud

    v09

    [1] 0 -1 -1 -2 2 1 1 0

    v10 = (v09 == 0) # devuelve TRUE para cada elemento en v10 que es igual a cero

    v10

    [1] VERDADERO FALSO FALSO FALSO FALSO FALSO

    v11 = que (v09 < 1) # devuelve el índice para cada elemento en v09 que es menor que 1

    v11

    [1] 1 2 3 4 8

    v12 = v09 [! v09 < 1] # devuelve valores para elementos en v09 cuyos valores no son menores que 1

    v12

    [1] 2 1 1

    Marcos de datos

    Un marco de datos es una colección de vectores, todos iguales en longitud pero no necesariamente de un solo tipo de elemento, dispuestos con los vectores como columnas del marco de datos.

    df01 = data.frame (v07, v08, v09, v10)

    df01

    v07 v08 v09 v10

    1 1 1 0 VERDADERO

    2 2 1 -1 FALSO

    3 3 2 -1 FALSO

    4 4 2 -2 FALSO

    5 1 3 2 FALSO

    6 2 3 1 FALSO

    7 3 4 1 FALSO

    8 4 4 0 VERDADERO

    Podemos acceder a los elementos en un marco de datos usando el índice del marco de datos, que toma la forma [número (s) de fila, número (s) de columna (s)], donde [es el operador de corchetes.

    df02 = df01 [1,] # devuelve todos los elementos en la primera fila del marco de datos

    df02

    v07 v08 v09 v10

    1 1 1 0 VERDADERO

    df03 = df01 [, 3:4] # devuelve todos los elementos de la tercera y cuarta columnas del marco de datos

    df03

    v09 v10

    1 0 VERDADERO

    2 -1 FALSO

    3 -1 FALSO

    4 -2 FALSO

    5 2 FALSO

    6 1 FALSO

    7 1 FALSO

    8 0 VERDADERO

    df04 = df01 [4, 3] # devuelve el elemento en la cuarta fila y tercera columna del marco de datos

    df04

    [1] -2

    También podemos extraer una sola columna de un marco de datos usando el operador de signo de dólar ($) para designar el nombre de la columna

    df05 = df01$v08

    df05

    [1] 1 1 2 2 3 3 4 4 4

    Nota

    Si observa cuidadosamente la salida anterior verá que extraer una sola fila o varias columnas usando el operador [devuelve un nuevo marco de datos. Extraer un solo elemento de un marco de datos usando el operador de corchetes, o una sola columna usando el operador $ devuelve un vector.

    Matrices y matrices

    Una matriz es similar a un marco de datos, pero cada elemento de una matriz es del mismo tipo, generalmente numérico.

    m01 = matriz (1:10, nrow = 5) # coloca números 1:10 en matriz con cinco filas, archivando por columna

    m01

    [,1] [,2]

    [1,] 1 6

    [2,] 2 7

    [3,] 3 8

    [4,] 4 9

    [5,] 5 10

    m02 = matriz (1:10, ncol = 5) # coloca números 1:10 en matriz con cinco columnas, llenando por fila

    m02

    [,1] [,2] [,3] [,4] [,5]

    [1,] 1 3 5 7 9

    [2,] 2 4 6 8 10

    Una matriz tiene dos dimensiones y una matriz tiene tres o más dimensiones.

    Listas

    Una lista es un objeto que contiene otros objetos, incluso si esos objetos son de diferentes tipos.

    li01 = lista (v00, df01, m01)

    li01

    [[1]]

    [1] 1.1 2.2 3.3 4.4

    [[2]]

    v07 v08 v09 v10

    1 1 1 0 VERDADERO

    2 2 1 -1 FALSO

    3 3 2 -1 FALSO

    4 4 2 -2 FALSO

    5 1 3 2 FALSO

    6 2 3 1 FALSO

    7 3 4 1 FALSO

    8 4 4 0 VERDADERO

    [[3]]

    [,1] [,2]

    [1,] 1 6

    [2,] 2 7

    [3,] 3 8

    [4,] 4 9

    [5,] 5 10

    Tenga en cuenta que el corchete doble, como [[1]], identifica un objeto en la lista y que podemos extraer valores de esta lista usando esta notación.

    li01 [[1]] # extraer el primer objeto almacenado en la lista

    [1] 1.1 2.2 3.3 4.4

    li01 [[1]] [1] # extraer el primer valor del primer objeto almacenado en la lista

    [1] 1.1

    Archivos de script

    Si bien puedes ingresar comandos directamente en el Panel de consola de RStudio y ejecutarlos, te resultará mucho más fácil escribir tus comandos en un archivo de script y enviarlos a la consola línea por línea, como grupos de dos o más líneas, o todas a la vez mediante el abastecimiento del archivo. Cometerás errores a medida que ingreses el código. Cuando su error está en una línea de un script multilínea, puede corregir el error y luego volver a ejecutar el script de una vez sin la necesidad de reescribir cada línea directamente en la consola.

    Para abrir un archivo de script, seleccione Archivo: Nuevo archivo: R Script en el menú principal. Para guardar su archivo script, que tendrá .R como extensión, seleccione Archivo: Guardar en el menú principal y navegue hasta la carpeta donde desea guardar el archivo. Como ejercicio, intente ingresar la siguiente secuencia de comandos en un archivo de script

    x1 = runif (1000) # un vector de 1000 valores dibujados al azar a partir de una distribución uniforme
    x2 = runif (1000) # otro vector de 1000 valores dibujados al azar a partir de una distribución uniforme
    y1 = rnorm (1000) # un vector de 1000 valores dibujados al azar de una distribución normal
    y2 = rnorm (1000) # otro vector de 1000 valores dibujados al azar a partir de una distribución normal
    old.par = par (mfrow = c (2,2)) # crear una cuadrícula de 2 x 2 para parcelas
    plot (x1, x2) # crear una gráfica de dispersión de dos vectores
    plot (y1, y2)
    plot (x1, y1)
    plot (x2, y2)
    par (old.par) # restaurar las condiciones iniciales de la parcela (más sobre esto más adelante)

    guárdelo como Test_script.r y luego haga clic en el botón Fuente; debería ver la siguiente trama aparecer en la pestaña Trazar.

    clipboard_e81e27ee53c9787497e33ca2c93a8db4a.png
    Figura\(\PageIndex{1}\): Cuadrícula de cuatro diagramas de dispersión creados por el código en Test_script.r. La gráfica de dispersión en la parte superior izquierda utiliza dos vectores dibujados al azar a partir de una distribución uniforme. La gráfica de dispersión en la parte superior derecha utiliza dos vectores dibujados al azar a partir de una distribución normal. Cada una de las gráficas de dispersión en la fila inferior utiliza dos vectores, uno dibujado al azar a partir de una distribución uniforme y otro dibujado al azar de una distribución normal. (Copyright; autor vía fuente)

    Cargar un archivo de datos y guardar un archivo de datos

    Aunque crear un pequeño vector, marco de datos, matriz, matriz o lista es fácil, crear uno con cientos de elementos o crear docenas de objetos de datos individuales es tedioso en el mejor de los casos; por lo tanto, la capacidad de cargar datos guardados durante una sesión anterior, o la capacidad de leer en un archivo de hoja de cálculo es útil.

    Para leer en un archivo de hoja de cálculo guardado en formato.csv (valores separados por comas), utilizamos la función read.csv () de R, que toma la forma general

    read.csv (archivo)

    donde file proporciona la ruta absoluta al archivo. Esto es más fácil de administrar si navega a la carpeta donde se almacena su archivo.csv usando el panel de archivos de RStudio y luego lo configura como el directorio de trabajo haciendo clic en Más y seleccionando Establecer como directorio de trabajo. Descarga el archivo "element_data.csv" usando este enlace y luego guarda el archivo en una carpeta en tu computadora. Navega a esta carpeta y conéctala como tu directorio de trabajo. Ingresa la siguiente línea de código

    elements = read.csv (archivo = "element_data.csv “)

    para leer los datos del archivo en un marco de datos llamado elementos. Para ver la estructura del marco de datos utilizamos la función head () para mostrar las primeras seis filas de datos.

    cabeza (elementos)

    nombre símbolo at_no at_wt mp bp fase electronegatividad electron_afinidad

    1 Hidrógeno H 1 1.007940 14.01 20.28 Gas 2.20 72.8

    2 Helio He 2 4.002602 NA 4.22 Gas NA 0.0

    3 Litio Li 3 6.941000 453.69 1615.15 Sólido 0.98 59.6

    4 Berilio Be 4 9.012182 1560.15 2743.15 Sólido 1.57 0.0

    5 Boro B 5 10.811000 2348.15 4273.15 Sólido 2.04 26.7

    6 Carbono C 6 12.010700 3823.15 4300.15 Sólido 2.55 153.9

    período de grupo de bloques at_radius covalent_radius

    1 s 1 5.30e-11 3.70e-11

    2 p 18 1 3.10e-11 3.20e-11

    3 s 1 2 1.67e-10 1.34e-10

    4 s 2 2 1.12e-10 9.00e-11

    5 p 13 2 8.70e-11 8.20e-11

    6 p 14 2 6.70e-11 7.70e-11

    Tenga en cuenta que las celdas de la hoja de cálculo con valores faltantes aparecen aquí como NA para no disponibles. Los puntos de fusión (mp) y los puntos de ebullición (pb) están en Kelvin, y las afinidades de los electrones están en kJ/mol.

    Puede guardar en su directorio de trabajo el contenido del marco de datos usando la función write.csv (); así, podemos guardar una copia de los datos en elementos usando la siguiente línea de código

    write.csv (elementos, archivo = "element_data_copy.csv “)

    Otra forma de guardar varios objetos es usar la función save () para crear un archivo.rData. Por ejemplo, para guardar los vectores v00, v01 y v02 en un archivo con el nombre Vectors.rData, ingrese

    guardar (v00, v01, v02, file = “Vectors.rData”)

    Para leer en los objetos en un archivo.rData, navegue hasta la carpeta que contiene el archivo, haga clic en el nombre del archivo y RStudio le preguntará si desea cargar el archivo en su sesión.

    Uso de paquetes de funciones

    La instalación base de R proporciona muchas funciones útiles para trabajar con datos. La ventaja de estas funciones es que funcionan (siempre un plus) y son estables (lo que significa que seguirán funcionando incluso cuando R se actualice a nuevas versiones). En su mayor parte, confiaremos en las funciones integradas de R por estas dos razones. Cuando necesitamos capacidades que no forman parte de la instalación base de R, entonces debemos escribir nuestras propias funciones o usar paquetes de funciones escritos por otros.

    Para instalar un paquete de funciones, haga clic en la pestaña Paquetes en el panel Archivos, Parcelas, Paquetes, Ayuda y Visor. Haga clic en el botón etiquetado Instalar, ingrese el nombre del paquete que desea instalar y haga clic en Instalar para completar la instalación. Solo necesitas instalar un paquete una vez.

    Para usar un paquete que no forme parte de la instalación base de R, es necesario llevarlo a su sesión actual, lo que hace con la biblioteca de comandos (nombre del paquete) o haciendo clic en la casilla de verificación junto al nombre del paquete en la lista de sus paquetes instalados. Una vez que haya cargado el paquete en su sesión, permanecerá disponible para usted hasta que salga de RStudio.

    Gestionar su entorno

    Una buena característica de RStudio es que el Panel de entorno proporciona una lista de los objetos que crea. Si su entorno se vuelve demasiado desordenado, puede eliminar elementos cambiando a la vista de cuadrícula, haciendo clic en la casilla de verificación junto a los objetos que desea eliminar y luego haciendo clic en el icono de escoba. Puede eliminar todos los elementos de la vista Lista simplemente haciendo clic en el icono de la escoba.

    Obteniendo Ayuda

    Existen extensos archivos de ayuda para las funciones de R que puedes buscar usando el Panel de Ayuda o usando el comando help (). Un archivo de ayuda le muestra la sintaxis correcta del comando, incluidos los tipos de valores que puede pasar al comando y sus valores predeterminados, si los hay, más detalles sobre esto más adelante, y le proporciona algunos ejemplos de cómo se usa el comando. Los archivos de ayuda de R pueden ser difíciles de analizar a veces; puede resultarle más útil simplemente usar un motor de búsqueda para buscar información sobre “cómo usar <command>en R.” Otra buena fuente para encontrar ayuda con R es stackoverflow.


    This page titled 1.2: Los fundamentos de trabajar con R is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by David Harvey.