web-dev-qa-db-fra.com

Que font les backticks dans R?

J'essaie de comprendre ce que font les contre-coups dans R.

D'après ce que je peux dire, cela n'est pas expliqué dans le ?Quotes page de documentation pour R.

Par exemple, sur la console R:

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

Il semble renvoyer l'équivalent à:

get("[[")
25
Megatron

Une paire de backticks est un moyen de faire référence à des noms ou des combinaisons de symboles qui sont autrement réservés ou illégaux. Les mots comme if font partie du langage, tandis que les combinaisons illégales comme c a t. Ces deux catégories, réservées et illégales, sont appelées dans la documentation R non-syntactic names.

Donc,

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

et

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

Comme l'a mentionné un intervenant, ?Quotes contient des informations sur le backtick, sous Names and Identifiers:

Les identifiants se composent d'une séquence de lettres, de chiffres, du point (.) et le trait de soulignement. Ils ne doivent pas commencer par un chiffre ni un trait de soulignement, ni par un point suivi d'un chiffre. Les mots réservés ne sont pas des identifiants valides.

La définition d'une lettre dépend des paramètres régionaux actuels, mais seuls les chiffres ASCII sont considérés comme des chiffres.

Ces identifiants sont également connus sous le nom de noms syntaxiques et peuvent être utilisés directement dans le code R. Presque toujours, d'autres noms peuvent être utilisés à condition qu'ils soient cités. La citation préférée est le backtick (`), et deparse l'utilisera normalement, mais dans de nombreuses circonstances, des guillemets simples ou doubles peuvent être utilisés (car une constante de caractère sera souvent convertie en nom). Un endroit où les backticks peuvent être essentiels est de délimiter les noms de variables dans les formules: voir formula

Cette prose est un peu difficile à analyser. Cela signifie que pour que R analyse un jeton en tant que nom, il doit être 1) une séquence de chiffres, le point et le soulignement, que 2) n'est pas un mot réservé dans la langue. Sinon, pour être analysé en tant que nom, des backticks doivent être utilisés.

Consultez également ?Reserved:

Les mots réservés en dehors des guillemets sont toujours analysés pour être des références aux objets liés dans la 'Description', et par conséquent, ils ne sont pas autorisés en tant que noms syntaxiques (voir make.names). Ils sont autorisés en tant que noms non syntaxiques, par exemple, entre guillemets internes.

De plus, Advanced R a quelques exemples d'utilisation des backticks dans expressions , environnements et fonctions .

25
jaimedash

Ils sont équivalents à verbatim. Par exemple ... essayez ceci:

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

donne une erreur

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

ne donne pas d'erreur

7
Amit Kohli

Voici une réponse incomplète en utilisant un vocabulaire incorrect: des backticks peuvent indiquer à R que vous utilisez une fonction d'une manière non standard. Par exemple, voici une utilisation de [[, la fonction de sous-ensemble de liste:

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

extraire l'élément un, de la manière habituelle

temp[[1]]

extraire l'élément un en utilisant le [[ fonction

`[[`(temp,1)
4
lmo