Почему "предпочтительнее" в R
От help("'")
:
Одиночные и двойные кавычки ограничивают символьные константы. Они могут использоваться предпочтительны двойные кавычки (и характер константы печатаются с использованием двойных кавычек), поэтому одинарные кавычки обычно используется только для разграничения символьных констант, содержащих двойные котировки.
Если они взаимозаменяемы, почему предпочтительны двойные кавычки? Мне еще предстоит найти разницу между ними в моем собственном использовании. Особенно удивительно, что векторы смешанного характера допустимы:
> c("a",'b',"c")
[1] "a" "b" "c"
Edit
Я действительно задаю здесь два вопроса, я думаю:
- Существуют ли ситуации, в которых
'
и "
ведут себя по-другому?
- Если нет, то почему
"
выбран в качестве предпочтительной версии по соглашению?
Ответы до сих пор были связаны с (2), но (1), по крайней мере, такой же большой интерес.
Ответы
Ответ 1
Я не знаю ни одного случая, когда одиночные кавычки отличаются от двойников. Я думаю, что предпочтение связано с читабельностью и во избежание возможной путаницы одиночных кавычек с обратными тиками, которые обрабатываются по-разному. Вероятно, очень сложно для системы глазного мозга в wetware подобрать несоответствующий back-tick в паре с одной цитатой.
> `newfn` <- function() {}
> newfn
function() {}
> "newfn" <- function() {}
> newfn
function() {}
> 'newfn' <- function() {}
> newfn
function() {}
> var <- c(`a`, "b", 'c')
Error: object 'a' not found
> var <- c( "b", 'c')
> var
[1] "b" "c"
> a <- 1
> identical(`a`, a)
[1] TRUE
Таким образом, для присвоения имен они (s-кавычки, d-кавычки и обратные тики) обрабатываются одинаково на LHS назначения из function
, но неуказанные a
и обратные метки a
совпадают в командной строке и отличаются от любого из указанных "a" или "a".
Другая ситуация, когда может быть разница, заключается в вводе данных. Имена людей могут иметь одинарные кавычки, и это не значит, что вы можете просмотреть обработку двух разных видов кавычек с помощью функции read.table
. По умолчанию он использует оба типа кавычек, но может потребоваться "отключить" действие кавычек одинарных кавычек, установив quote="\""
, чтобы по ошибке не получить большие капли данных, превращенные в одно текстовое поле. Функция count.fields
имеет те же значения по умолчанию, что и read.table, поэтому имеет смысл сделать предварительный прогон с этим, чтобы проверить, что укороченные строки вызывают несогласованные одинарные кавычки:
table( count.fields('filnam.ext') )
Ответ 2
Моя догадка заключается в том, что "одиночные кавычки" встречаются гораздо чаще как апострофы, поэтому предпочтение двойным кавычкам уменьшит вероятность того, что все испортится с апострофом.
Ответ 3
Относительно первого вопроса: Существуют ли ситуации, в которых "и" ведут себя по-другому? Я думаю, важно отметить, что поскольку
identical("a", 'a')
TRUE
Пользователи R (в том числе разработчики пакетов) не могут сказать разницу, следовательно, не могут создавать разные типы поведения для одного или другого.
Ответ 4
Чтобы избежать путаницы для тех, кто привык к программированию в
C языков (C, С++, Java), где есть разница в
значение одинарных кавычек и двойных кавычек.
Программист С читает "а" как один символ и "а" как символ
строка, состоящая из буквы "a", за которой следует нулевой символ,
завершите строку. В R нет символьного типа данных, есть
только символьные строки. Для обеспечения совместимости с другими языками это помогает
если символьные строки ограничены двойными кавычками. Одиночная цитата
версия в R для удобства. На большинстве клавиатур вам не нужно
используйте клавишу shift для ввода одной кавычки, но вам нужен сдвиг для
двойная кавычка.