list_len мягко осуждается с версии 0.2.0 - PullRequest
1 голос
/ 10 мая 2019

Я использую код R и получил следующее предупреждение

Warning message:
`list_len()` is soft-deprecated as of rlang 0.2.0.
Please use `new_list()` instead
This warning is displayed once per session. 

Что бы это ни стоило, код вызова выглядит примерно так:

  df = convertCallCountsToHashTable(call_counts_hash_table )

  df %>%
    filter(needs_review) %>%
    filter( package != "R_GlobalEnv") %>%
    top_n( num_functions, desc(review_timer ))

Я знаю, что код в convertCallCountsToHashTable никогда не вызывает напрямую list_len; однако он вызывает некоторые методы из dplyr, tidyr и lubridate.

Как я могу сделать что-то вроде traceback, чтобы выяснить, откуда приходит это предупреждение?

Как сделать так, чтобы предупреждение отображалось более одного раза за сеанс, чтобы я мог попытаться отладить его?

1 Ответ

3 голосов
/ 10 мая 2019

Вы можете debug list_len, а затем использовать sys.calls для просмотра стека функций. Обратите внимание, что, поскольку list_len не экспортируется, вы должны ссылаться на пространство имен.

my_fun <- function() rlang::list_len(3)
debug(rlang::list_len)
my_fun()
debugging in: rlang::list_len(3)
debug: {
    signal_soft_deprecated(paste_line("`list_len()` is soft-deprecated as of rlang 0.2.0.", 
        "Please use `new_list()` instead"))
    new_list(.n)
}
Browse[2]> sys.calls()
[[1]]
my_fun()

[[2]]
rlang::list_len(3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...