Когда используются обратные кавычки по сравнению с двойными кавычками? - PullRequest
3 голосов
/ 29 мая 2020

То, что я знаю до сих пор ...

1) Обратные кавычки используются при создании таблиц с несинтаксисом c имена переменных / столбцов, которые содержат числа, пробелы или другие символы (потому что обычно вы можете только столбцы имен с буквами, верно?)

 tb <- tibble( 
               ': ) ' = "smile, ' ' = "space", 
               '2000' = "number", "double_quotes" = "normal_text")

Однако, когда я использую здесь двойные кавычки, таблица по-прежнему формируется с несинтаксисом c символов / чисел.

2) Двойные кавычки используется для подмножества имен столбцов при использовании двойных скобок.

  tb[["double_quotes"]]

И здесь, когда я использую одинарные кавычки для подмножества, он все еще работает.

3) При подмножестве с использованием $, чтобы выберите для несинтаксических c имен, я должен использовать одинарные кавычки, но здесь опять же, если я использую двойные кавычки, это тоже работает

Опять же, tb$": )" работает так же хорошо, как tb$': )'

Так они фактически взаимозаменяемы?


Интересно, что при построении графика

annoying <- tibble(
  `1` = 1:10,
  `2` = `1` * 2 + rnorm(length(`1`))
)

ggplot(annoying, aes(x = `1`, y = `2`)) +
  geom_point()

Одинарные кавычки должны использоваться при обращении к nonsyntacti c переменные, потому что другие мудро, похоже, что ggplot рассматривает X и Y как отдельные точки 1 и 2 соответственно. Есть ли еще такие случаи?

1 Ответ

3 голосов
/ 30 мая 2020

Важно различать guish одинарные кавычки (') и обратные кавычки (или «обратные одинарные кавычки») (`).

Большая часть того, что вы хотите знать, находится в ?Quotes:

Символьные константы ограничивают одинарные (') и двойные (") кавычки. Их можно использовать взаимозаменяемо, но предпочтительны двойные кавычки (а символьные константы печатаются с использованием двойных кавычек), поэтому одинарные кавычки обычно используются только для ограничения символьных констант, содержащих двойные кавычки.

Почти всегда можно использовать другие [т. е. несинтаксически допустимые] имена, если они заключены в кавычки. Предпочтительной кавычкой является обратная кавычка ('' ' ) ... во многих случаях могут использоваться одинарные или двойные кавычки (поскольку символьная константа часто преобразуется в имя). Одно место, где обратные кавычки могут быть существенными, - это разделение имен переменных в формулах: см. «формула».

Например, если вы хотите определить имя переменной, содержащее пробел, вам нужны обратные галочки:

`a b` <- 1

Двойные кавычки также работают здесь (к моему удивлению!)

"a b" <- 1

, но если вы хотите использовать результирующую переменную в выражении, вам нужно будет использовать обратные галочки. "a b" + 1 дает ошибку («нечисловой c аргумент бинарного оператора»), но `a b`+1 работает.

Как указывает @ r2evans, те же правила применяются в выражениях tidyverse. Вы можете использовать двойные или одинарные кавычки (если хотите) для определения новых переменных: mtcars %>% mutate("my stuff"=4), но если вы хотите впоследствии использовать эту переменную (или любую другую несинтаксическую переменную c) в выражении, у вас есть для его защиты: mtcars %>% mutate("my stuff"=4, new=`my stuff` + 5).

Вероятно, лучше всего использовать обратные кавычки для всех несинтаксических c ссылок на переменные и одинарные кавычки для символьных констант.

...