从rlang 0.2.0开始不推荐使用list_len

时间:2019-05-10 15:25:06

标签: r tidyverse rlang

我正在运行一些R代码,并收到以下警告消息

public imgarray=[];

  ngOnInit() {

      this.uploader.onAfterAddingFile = (file) => {

      file.withCredentials = false;

      this.imgarray.push('../assets/uploads/'+file);

  };

对于它的价值,调用代码看起来类似于以下内容

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_lendplyrtidyr中调用了一些方法。

如何执行类似lubridate的操作来确定此警告消息的来源?

如何使每个会话多次显示警告,以便我可以对其进行调试?

1 个答案:

答案 0 :(得分:3)

您可以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)