x $ name НЕ эквивалентно x [["name", точный = FALSE]], почему бы и нет? - PullRequest
0 голосов
/ 22 января 2019

R Документация (Извлечение, извлечение или замена частей объекта) гласит, что

x $ name эквивалентно x [["name", точный = FALSE]]

Однако

> s <- c(a = 1, b = 2, c = 3)
> s$a
Error in s$a : $ operator is invalid for atomic vectors
> s[["a"]]
[1] 1
> s[["a", exact = FALSE]]
[1] 1

Почему это так?

1 Ответ

0 голосов
/ 22 января 2019

Позвольте мне начать с цитаты с той же страницы документации:

$ действительно только для рекурсивных объектов и обсуждается только в разделе ниже о рекурсивных объектах.

Рекурсивные объекты - это объекты, которые могут содержать объекты одного типа, например списки или выражения.

Вы удалили цитату из своего вопроса из контекста.Он находится в разделе «Рекурсивные (подобные списку) объекты», а не в разделе «Атомные векторы».Вы задаете атомный вектор.

Вот исправленный пример, который также иллюстрирует эффект exact = FALSE:

l <- list(ab = 1, b = 2, c = 3)
l$a
#[1] 1
l[["a"]]
#NULL
l[["a", exact = FALSE]]
#[1] 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...