r syntax backticks

¿Qué hacen los backticks en R?



syntax (3)

Aquí hay una respuesta incompleta que utiliza vocabulario incorrecto: los backticks pueden indicarle a R que está utilizando una función de una manera no estándar. Por ejemplo, aquí hay un uso de [[ , la función de subconjunto de listas:

temp <- list("a"=1:10, "b"=rnorm(5))

extraer el elemento uno, de la forma habitual

temp[[1]]

extraer el elemento uno usando la función [[

`[[`(temp,1)

Estoy tratando de entender lo que hacen los backticks en R.

Por lo que puedo decir, esto no se explica en la página de documentación de ?Quotes para R.

Por ejemplo, en la consola R:

"[[" # [1] "[[" `[[` # .Primitive("[[")

Parece estar devolviendo el equivalente a:

get("[[")


Son equivalentes al pie de la letra. Por ejemplo ... intente esto:

df <- data.frame(20a=c(1,2),b=c(3,4))

da error

df <- data.frame(`20a`=c(1,2),b=c(3,4))

no da error


Un par de backticks es una forma de referirse a nombres o combinaciones de símbolos que de otro modo están reservados o son ilegales. Se reservan palabras como if son parte del lenguaje, mientras que ilegal incluye combinaciones no sintácticas como cat . Estas dos categorías, reservadas e ilegales, se mencionan en la documentación de R como non-syntactic names .

Así,

`c a t` <- 1 # is valid R

y

> `+` # is equivalent to typing in a syntactic function name function (e1, e2) .Primitive("+")

Como mencionó un comentarista,? ?Quotes contiene información sobre el backtick, en Names and Identifiers:

Los identificadores consisten en una secuencia de letras, dígitos, el punto ( . ) Y el guión bajo. No deben comenzar con un dígito ni subrayado, ni con un punto seguido de un dígito. Las palabras reservadas no son identificadores válidos.

La definición de una letra depende del entorno local actual, pero solo los dígitos ASCII se consideran dígitos.

Dichos identificadores también se conocen como nombres sintácticos y se pueden usar directamente en el código R. Casi siempre, se pueden usar otros nombres siempre que se citen. La comilla preferida es la tecla de retroceso ( ` ), y la deparse normalmente la usará, pero en muchas circunstancias se pueden usar comillas simples o dobles (ya que una constante de caracteres a menudo se convertirá en un nombre). Un lugar donde los backticks pueden ser esenciales es delimitar nombres de variables en fórmulas: ver formula

Esta prosa es un poco difícil de analizar. Lo que significa es que para que R analice un token como nombre, debe ser 1) una secuencia de letras, el punto y el subrayado, que 2) no es una palabra reservada en el idioma. De lo contrario, para que se analice como un nombre, se deben utilizar los backticks.

También echa un vistazo ?Reserved :

Las palabras reservadas fuera de las comillas siempre se analizan como referencias a los objetos vinculados en la ''Descripción'' y, por lo tanto, no están permitidas como nombres sintácticos (consulte make.names ). Se permiten como nombres no sintácticos, por ejemplo, comillas de comillas invertidas.

Además, Advanced R tiene algunos ejemplos de cómo se usan los backticks en expressions , environments y functions .