难以找到通用函数的方法

时间:2019-02-01 04:16:27

标签: r function

我正在尝试研究sjmisc::count_na的源代码。我在挖掘源代码方面不是很有经验,因此我一直使用this thread作为指南,但仍然遇到困难。我希望这不会重复。

在RStudio中,我可以按count_na上的F2来获取其来源,但是看起来有些工作是在名为get_label的函数中完成的。该功能的源代码很简单

function (x, ..., def.value = NULL, case = NULL) 
{
  UseMethod("get_label")
}

上面的线程建议尝试使用methods()getAnywhere

library(sjmisc)

methods("get_label")
#> Error in .S3methods(generic.function, class, parent.frame()): no function 'get_label' is visible

getAnywhere("get_label")
#> A single object matching 'get_label' was found
#> It was found in the following places
#>   namespace:sjlabelled
#> with value
#> 
#> function (x, ..., def.value = NULL, case = NULL) 
#> {
#>     UseMethod("get_label")
#> }
#> <bytecode: 0x000000001a7522c0>
#> <environment: namespace:sjlabelled>

这清楚表明get_label()sjlabelled命名空间中的函数。我不确定如何继续查找其源代码。基于上面的线程,我了解到我首先需要弄清楚为get_label编写了哪些类,然后才能查看特定于类的方法的源代码。对于某些功能,使用F2之后,我已经可以使用RStudio中的下拉菜单来执行此操作,但是这里没有可用的此类菜单。我也尝试过:

methods("sjlabelled::get_label")
#> Error in .S3methods(generic.function, class, parent.frame()): no function 'sjlabelled::get_label' is visible

methods("sjlabelled:::get_label")
#> Error in .S3methods(generic.function, class, parent.frame()): no function 'sjlabelled:::get_label' is visible

showMethods("sjlabelled::get_label")
#> 
#> Function "sjlabelled::get_label":
#>  <not an S4 generic function>

这是怎么回事?找到get_label源代码需要做什么?

1 个答案:

答案 0 :(得分:2)

尝试以下操作:您可以在a.js import b from './b.js' export default { a: b } b.js import a from './a.js' export default { b: a } 中将class参数更改为首选参数。在getS3method("get_label","data.frame")

的结果中找到可用的类
methods("get_label")