Backticks en R – blog de Dave Tang

Las únicas veces que usé acentos graves en R fue cuando se importó un archivo a R y los nombres de las columnas tenían espacios (como nota al margen, no use espacios en su columna o nombre de archivo, pero use un guión bajo, es decir, _). Por ejemplo, puede acceder col a mediante el uso de acentos graves.

my_df <- data.frame(
  "col a" = 1:5,
  "col b" = letters[1:5],
  check.names = FALSE)

my_df$`col a`
[1] 1 2 3 4 5

Sin embargo, he visto acentos graves usados ​​en combinación con símbolos, especialmente con corchetes. El siguiente código le permite crear un subconjunto (cuarto elemento) de cada elemento de la lista.

my_list <- list(
  l = letters[1:5],
  u = LETTERS[1:5]
)

lapply(my_list, `[`, 4)
$l
[1] "d"

$u
[1] "D"

Resulta que el uso de acentos graves en los ejemplos anteriores es consistente, a pesar de dos aplicaciones muy diferentes: el acento grave le permite referirse a funciones o variables que de otro modo tienen nombres reservados o ilegales. El primer ejemplo con my_df muestra el uso de acentos graves para referirse a un nombre de columna ilegal y el segundo ejemplo con my_list muestra el uso de acentos graves para referirse a un nombre de función reservado. ¡El corchete es una función!

Puede consultar las páginas de ayuda en el [ function, by typing ?"[" and the manual will indicate that [ is used to extract or replace parts of vectors, matrices, or arrays. In R a function is invoked using parentheses, so to use [ like a typical function call, we can perform the following to get the first five heights in the dataset:

`[`(women, 1:5, 1)
[1]  58 59 60 61 62

El código anterior es en realidad el mismo que el de un subconjunto de un marco de datos, y es probablemente la sintaxis con la que la mayoría de la gente está familiarizada.

women[1:5, 1]
[1] 58 59 60 61 62

Pero resulta que no tienes que usar acentos graves y las comillas simples o dobles funcionan de la misma manera. A pesar de esto, he visto que los acentos graves se usan con más frecuencia, lo que podría deberse al hecho de que en Bash (¡y Perl!) los acentos graves se usan para indicar que el texto entre los acentos graves debe ejecutarse como un comando.

'['(women, 1:5, 1)
"["(women, 1:5, 1)
[1] 58 59 60 61 62
[1] 58 59 60 61 62

también resulta que ( es una función también, que era lo que supuse en mi publicación anterior. Puedo ejecutar el primer ejemplo de mi publicación anterior con acentos graves.

`(`(v_log <- c(TRUE, FALSE, FALSE, TRUE))
[1]  TRUE FALSE FALSE  TRUE

Para cerrar, terminaré con la siguiente cita, que encontré mientras investigaba para esta publicación, que me ayudó a entender los acentos graves en R.

«Para comprender los cálculos en R, dos lemas son útiles:

  • Todo lo que existe es un objeto.
  • Todo lo que sucede es una llamada de función».

–John Cámaras

Imprimir amigable, PDF y correo electrónico

Fuente del artículo

¿Que te ha parecido?

Deja un comentario