我有一个 S3 通用函数,我希望将其作为包的内部部分。如果可能的话我宁愿不导出它。这样做的一个有趣的缺点是似乎lapply无法找到或使用正确的 S3 方法。有谁知道这种行为背后的原因?下面是一个可重现的示例,其中涉及从我的 github 安装虚拟包。
在这种情况下,通用函数 is ,如果对象是,docheck则返回,否则返回。TRUE"foo"FALSE
library(remotes)
install_github("jtlandis/SOExample")
#> Skipping install of 'SOExample' from a github remote, the SHA1 (27ab918c) has not changed since last install.
#> Use `force = TRUE` to force installation
library(SOExample)
Run Code Online (Sandbox Code Playgroud)
foo 函数只是一个NA带有类的对象"foo"。
foo
#> function ()
#> structure(NA, class = "foo")
#> <bytecode: 0x0000000015033878>
#> <environment: namespace:SOExample>
Run Code Online (Sandbox Code Playgroud)
fun_success()仅显示内部(未导出)S3 功能起作用的情况。
fun_success
#> function (x)
#> {
#> docheck(x)
#> } …Run Code Online (Sandbox Code Playgroud)