Fundamentos del lenguaje R

Al aprender un nuevo lenguaje, normalmente se comienza con el programa "¡Hola, Mundo!"; el código del programa "Hello, World!" en R es el siguiente:

Ejemplo (helloworld.R)

myString <- "Hello, World!"

print ( myString )

El ejemplo anterior asigna la cadena "Hello, World!" a la variable myString y luego usa la función print() para imprimirla.

Nota:La asignación en R usa la flecha izquierda<-símbolo, aunque algunas versiones nuevas también admiten el signo igual=。

Nota:La extensión de archivo de script más común en R es.R。

Por ejemplo:

hello.R
data_analysis.R
stock.R

Aunque.rtambién se puede usar, la corriente principal de la comunidad usa casi exclusivamente .R。

Variables

Los nombres de variables válidos en R están formados por letras, números y puntos.o guiones bajos_compuestos.

Los nombres de variables comienzan con una letra o un punto.

Nombre de variable ¿Correcto? Razón
var_name2. Correcto comienza con un carácter y está compuesto por letras, números, guiones bajos y puntos
var_name% Incorrecto % es un carácter ilegal
2var_name Incorrecto no puede comenzar con un número

.var_name,

var.name

Correcto puede comenzar con . pero hay que tener en cuenta que después del punto no puede seguir un número
.2var_name Incorrecto después del punto no puede seguir un número
_var_name Incorrecto no puede comenzar con guion bajo _

Asignación de variables

En las versiones más recientes de R, la asignación puede usar la flecha izquierda<-, el signo igual=, la flecha derecha->asignación:

Ejemplo

# usar el signo = para asignar
> var.1 = c(0,1,2,3)          
> print(var.1)
[1] 0 1 2 3

# usar la flecha izquierda <- para asignar
> var.2 <- c("learn","R")  
> print(var.2)
[1] "learn" "R"
   
# usar la flecha derecha -> para asignar
> c(TRUE,1) -> var.3
> print(var.3)
[1] 1 1          

Para ver las variables definidas, se puede usar la funciónls()función:

Ejemplo

> print(ls())
[1] "var.1" "var.2" "var.3"

Para eliminar variables, se puede usar la funciónrm()función:

Ejemplo

> rm(var.3)
> print(ls())
[1] "var.1" "var.2"
>

En el capítulo anterior ya hemos aprendido cómo instalar el entorno de programación de R; a continuación, presentaremos la programación interactiva y la programación con script de archivo en R.

Programación interactiva

Solo necesitamos ejecutar el comando en la línea de comandosRpara entrar en la ventana de programación interactiva:

R

Después de ejecutar este comando, se invocará el intérprete de R. Simplemente escribimos el código después del símbolo >.

Para salir del modo interactivo, se puede ingresarq()para salir:

> q()
Save workspace image? [y/n/c]: y

Script de archivo

La extensión de archivo de R es.R。

A continuación, creamos un archivo ejemplo-test.R con el siguiente código:

Archivo ejemplo-test.R

myString <- "EJEMPLO"

print ( myString )

Luego usamos Rscript en la ventana de línea de comandos para ejecutar este script:

Rscript ejemplo-test.R

El resultado es el siguiente:

[1] "EJEMPLO"


Entrada y salida

Salida con print()

print()es la función de salida de R.

Igual que otros lenguajes de programación, R admite salida de números, caracteres, etc.

La instrucción de salida es muy sencilla:

print("EJEMPLO")
print(123)
print(3e2)

Resultado de la ejecución:

[1] "EJEMPLO"
[1] 123
[1] 300

R, al igual que node.js y Python, es un lenguaje interpretado, por lo que a menudo podemos usar R como si fuera una línea de comandos.

Si ingresamos solo un valor en una línea, R también lo genera directamente de forma estándar:

> 5e-2
[1] 0.05

¿Por qué el resultado impreso por R tiene

Muchos principiantes ven por primera vez:

[1] 30

y no saben qué significa; este[1]no es un índice de matriz.

[1]Esta línea de salida comienza desde el primer elemento.

Porque R es un lenguaje vectorizado por naturaleza.

Por ejemplo:

x <- c(10,20,30)

print(x)

Salida:

[1] 10 20 30

Si el contenido es demasiado largo:

[1] ...
[4] ...
[7] ...

indica desde qué elemento comienza esta línea.

La función cat()

Si necesitamos concatenar los resultados de salida, podemos usar la funcióncat()función:

Ejemplo

> cat(1, "más", 1, "es igual a", 2, '\n')
1Suma1es igual a2

cat()La función agrega automáticamente un espacio entre cada dos elementos concatenados.

Enviar contenido a un archivo

R tiene métodos muy variados y convenientes para la salida a archivos.

cat()La función admite la salida directa del resultado a un archivo:

cat("EJEMPLO", file="/Users/ejemplo/ejemplo-test/r_test.txt")

Esta instrucción no produce resultado en la consola, sino que envía "EJEMPLO" al archivo "/Users/ejemplo/ejemplo-test/r_test.txt".

El parámetro file puede ser una ruta absoluta o relativa; se recomienda usar ruta absoluta. El formato de ruta en Windows esD:\\r_test.txt。

cat("EJEMPLO", file="D:\\r_test.txt")

Nota: esta operación es una operación de "escritura sobrescrita"; úsela con cuidado, porque borrará los datos originales del archivo de salida. Si desea "escritura añadida", no olvide configurar el parámetro append:

cat("GOOGLE", file="/Users/ejemplo/ejemplo-test/r_test.txt", append=TRUE)

Después de ejecutar el código anterior, al abrir el archivo r_test.txt el contenido es el siguiente:

EJEMPLOGOOGLE

sink()

La función sink() puede enviar directamente la salida de la consola a un archivo:

sink("/Users/ejemplo/ejemplo-test/r_test.txt")

Después de ejecutar esta instrucción, cualquier salida en la consola se escribirá en el archivo "/Users/ejemplo/ejemplo-test/r_test.txt", y la consola no mostrará la salida.

Nota: esta operación también es de "escritura sobrescrita" y borrará directamente el contenido original del archivo.

Si aún queremos mantener la salida en la consola, podemos configurar el atributo split:

sink("/Users/ejemplo/ejemplo-test/r_test.txt", split=TRUE)

Si desea cancelar la salida al archivo, puede llamar a sink sin parámetros:

sink()

Ejemplo

sink("r_test.txt", split=TRUE)  # La consola también genera
for (i in 1:5)
    print(i)
sink()   # Cancelar la salida al archivo

sink("r_test.txt", append=TRUE) # La consola no genera, escribe añadiendo al archivo
print("EJEMPLO")

Después de ejecutar el código anterior, se generará un archivo r_test.txt en el directorio actual. Al abrir el archivo, el contenido es el siguiente:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] "EJEMPLO"

La salida en consola es:

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

Entrada de texto

Puede que pensemos en scanf en C, java.util.Scanner en Java; si has aprendido Python, quizás estés más familiarizado con la función input(). Sin embargo, R, como lenguaje interpretado, se parece más a algunos lenguajes de script de terminal (como bash o PowerShell), que se basan en sistemas de comandos y requieren entrada y salida, y no son adecuados para desarrollar aplicaciones orientadas al usuario (porque están destinados a usuarios finales). Por lo tanto, R no tiene una función específica para leer desde la consola; la entrada de texto se ha estado realizando durante el uso de R.

Leer texto desde un archivo

R tiene ricas funciones de lectura de archivos, pero si puramente se desea leer el contenido de un archivo como una cadena, se puede usar la función readLines:

readLines("/Users/ejemplo/ejemplo-test/r_test.txt")

Resultado de la ejecución:

[1] "EJEMPLOGOOGLE"

El resultado de la lectura son dos cadenas, que corresponden a las dos líneas de contenido del archivo leído.

Nota:Cada línea (incluida la última) del archivo de texto leído debe terminar con un carácter de nueva línea; de lo contrario, se reportará un error.

Otros métodos

Además de la entrada y salida simple de texto, R también proporciona muchos métodos para ingresar y generar datos. Lo más conveniente de R es que puede guardar estructuras de datos directamente en archivos, admitiendo formatos como CSV, tablas de Excel, etc., y también admite la lectura directa. Esto es sin duda muy conveniente para investigadores matemáticos. Sin embargo, estas funciones no tienen gran influencia en el aprendizaje de R, y las mencionaremos en capítulos posteriores.

Directorio de trabajo

Para operaciones con archivos, necesitamos configurar la ruta del archivo. R puede obtener y establecer el directorio de trabajo actual mediante las siguientes dos funciones:

  • getwd(): obtener el directorio de trabajo actual
  • setwd(): establecer el directorio de trabajo actual

Ejemplo

# directorio de trabajo actual
print(getwd())

# establecer el directorio de trabajo actual
setwd("/Users/ejemplo/ejemplo-test2")

# Ver el directorio de trabajo actual
print(getwd())

El resultado de ejecutar el código anterior es:

[1] "/Users/ejemplo/ejemplo-test"
[1] "/Users/tianqixin/ejemplo-test2"

La característica más importante de R: vectorización

Este es uno de los aspectos más potentes de R.

Python:

for i in range(10):
    ...

R:

x <- c(1,2,3)
x * 2

Resultado:

[1] 2 4 6
Todo el vector se calcula directamente.

Esto hace que R sea extremadamente potente en matemáticas, estadística y análisis de datos.

Otras extensiones