Как вызвать ошибку или NULL при доступе к элементу списка, который не существует? - PullRequest
0 голосов
/ 14 февраля 2019

Я нахожу странным, что это даже возможно:

> x <- list(abc = 2, def = 4)
> x$a
[1] 2

В идеале, я хотел бы вызвать ошибку, если кто-то пытается получить доступ к элементу списка, а элемент не существует.Я бы даже был в порядке, если результат NULL.Но, очевидно, R пытается быть слишком умным и найти другое поле, похожее на вызванный атрибут.

Я попытался посмотреть на options, но, похоже, нет никакой возможности изменить поведение доступа к списку.

Заранее спасибо.

> R.version
               _                           
platform       x86_64-apple-darwin13.4.0   
arch           x86_64                      
os             darwin13.4.0                
system         x86_64, darwin13.4.0        
status                                     
major          3                           
minor          2.3                         
year           2015                        
month          12                          
day            10                          
svn rev        69752                       
language       R                           
version.string R version 3.2.3 (2015-12-10)
nickname       Wooden Christmas-Tree       

Я знаю, это старая версия R.Наши модели находятся в производстве, и, похоже, в ближайшее время не планируется обновлять версию Prod R.


ОБНОВЛЕНИЕ: Найден способ превратить частичное соответствие в предупреждение:

> options(warnPartialMatchDollar = TRUE)
> x$a
[1] 2
Warning message:
In x$a : partial match of 'a' to 'abc'

1 Ответ

0 голосов
/ 14 февраля 2019

Вы можете указать, чтобы возвращать ошибку с аргументом warn=2 в options при частичном совпадении имени переменной

options(warnPartialMatchDollar = TRUE, warn = 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...