Почему R не выдает ошибку, когда я использую только начальную часть имени моего столбца во фрейме данных? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть фрейм данных, содержащий различные столбцы вместе с sender_bank_flag. Я выполнил два следующих запроса для своего фрейма данных.

sum(s_50k_sample$sender_bank_flag, na.rm=TRUE)

sum(s_50k_sample$sender_bank, na.rm=TRUE)

Я получил одинаковый вывод из обоих запросов, хотя в моем фрейме данных нет такого столбца, как sender_bank. Я ожидал получить ошибку для второго кода. Не знал, что R обладает такой функциональностью! Кто-нибудь знает, что это за функция и как ее лучше использовать?

1 Ответ

0 голосов
/ 28 августа 2018

Вероятно, стоит добавить все комментарии в ответ.


Обе мой комментарий и BenBolker's указывают на страницу документа ?Extract:

Под Рекурсивные (похожие на списки) объекты:

И "[[", и "$" выбирают один элемент списка. Основное отличие состоит в том, что "$" не допускает вычисляемые индексы, тогда как "[[" не допускает . x$name эквивалентно x[["name", exact = FALSE]]. Кроме того, поведение частичного совпадения "[[" можно контролировать с помощью аргумента exact.

Под Символьные индексы:

Индексы символов в некоторых случаях могут быть частично сопоставлены (см. ?pmatch) с именами или dimnames объекта, являющегося поднабором (но никогда для поднабора). В отличие от S (Беккер и др. стр. 358), R никогда не использует частичное соответствие при извлечении с помощью "[", а частичное соответствие по умолчанию не используется "[[" (см. Аргумент exact).

Таким образом, по умолчанию используется частичное сопоставление только при извлечении из рекурсивных объектов (кроме сред) с помощью "$". Даже в этом случае предупреждения могут быть включены с помощью options(warnPartialMatchDollar = TRUE).

Обратите внимание, что руководство содержит обширную информацию, и убедитесь, что вы полностью переварили их. Я отформатировал содержимое, добавив потоки переполнения стека, где это уместно.


Ссылки, предоставленные Комментарий фивера стоит прочесть в долгосрочной перспективе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...