Что делают backticks в R?
Я пытаюсь понять, что делают backticks в R.
Из того, что я могу сказать, это не объясняется на странице документации ?Quotes
для R.
Например, на консоли R:
"[["
# [1] "[["
`[[`
# .Primitive("[[")
Похоже, что он возвращает эквивалент:
get("[[")
3 ответа:
Пара обратных указателей-это способ ссылаться на имена или комбинации символов, которые в противном случае зарезервированы или запрещены. Зарезервированные слова, такие как
if
, являются частью языка, в то время как незаконные включают в себя не синтаксические комбинации, такие какc a t
. Эти две категории, зарезервированные и незаконные, упоминаются в документации R какnon-syntactic names
.Таким образом,
`c a t` <- 1 # is valid R
И
> `+` # is equivalent to typing in a syntactic function name function (e1, e2) .Primitive("+")
Как упоминалось комментатором,
?Quotes
содержит некоторую информацию о задней панели, подNames and Identifiers:
Эту прозу немного трудно разобрать. Это означает, что для того, чтобы R разбирал токен как имя, он должен быть 1) последовательностью букв цифр, точки и подчеркивания, что 2) не является зарезервированным словом в языке. В противном случае, чтобы быть проанализированным как имя, должны использоваться обратные метки.Identifiers consist of a sequence of letters, digits, the period (‘.’) and the underscore. They must not start with a digit nor underscore, nor with a period followed by a digit. Reserved words are not valid identifiers. The definition of a _letter_ depends on the current locale, but only ASCII digits are considered to be digits. Such identifiers are also known as _syntactic names_ and may be used directly in R code. Almost always, other names can be used provided they are quoted. The preferred quote is the backtick (‘`’), and ‘deparse’ will normally use it, but under many circumstances single or double quotes can be used (as a character constant will often be converted to a name). One place where backticks may be essential is to delimit variable names in formulae: see ‘formula’.
Также проверьте
?Reserved
:Reserved words outside quotes are always parsed to be references to the objects linked to in the ‘Description’, and hence they are not allowed as syntactic names (see ‘make.names’). They *are* allowed as non-syntactic names, e.g. inside backtick quotes.
Кроме того, Advanced R имеет несколько примеров использования обратных меток в выражениях , среды , и функции .
Они эквивалентны дословно. Например... попробуйте это:
df <- data.frame(20a=c(1,2),b=c(3,4))
Дает ошибку
df <- data.frame(`20a`=c(1,2),b=c(3,4))
Не дает ошибки
Вот неполный ответ с использованием неправильной лексики: backticks может указать R, что вы используете функцию нестандартным способом. Например, здесь используется
[[
, функция подстановки списка:temp <- list("a"=1:10, "b"=rnorm(5))
Извлеките элемент один обычным способом
temp[[1]]
Извлеките первый элемент с помощью функции
[[
`[[`(temp,1)