首页 > 解决方案 > 如何查看 R 中类方法的可用参数和文档?

问题描述

我们如何查看类方法的所有可用参数(或更一般地查看文档)?

例如,如果我们查看参数print()

?print

x   
an object used to select a method.

... 
further arguments passed to or from other methods.

quote   
logical, indicating whether or not strings should be printed with surrounding quotes.


-- leaving others out for brevity --
 
useSource   
logical indicating if internally stored source should be used for printing when present, e.g., if options(keep.source = TRUE) has been in use.

请注意,我们没有看到有关参数的任何文档max_n

现在假设我们调用print()一些 class xml_nodes,例如:

library(rvest)
library(dplyr)

# Generate an object of class xml_nodes
a <- rep("<p></p>", 30) %>% 
  paste0(collapse="") %>% 
  read_html %>% 
  html_nodes("p")

class(a)
# [1] "xml_nodeset"

a属于 class xml_nodeset,如果我们调用print(a),它只打印20 个 results,那是因为(我认为) xml_nodeset 类被配置为当print被调用时,它只会返回 20 个结果。(“20”数字可以通过max_n参数更改)。

我们如何找到在print类对象上调用时行为方式的具体文档xml_nodeset?(最好通过 RStudio/手册)

请注意,上面的示例只是一个随机示例,我想找到一种通用方法来查找所有类方法的文档

标签: r

解决方案


您可以通过运行查看所有“特殊”版本的 print methods(print)。这些版本通常采用<function name>.<class name>. 那里列出的许多都有星号,这意味着它们不是直接从定义它们的包中导出的。如果他们有文档,您可以通过?print.rle例如访问它。在这种情况下,没有该print.xml_nodeset函数的文档。但是,如果您这样做,getAnywhere(print.xml_nodeset)或者如果您碰巧知道它来自xml2命名空间,您可以查看它,您可以这样做xml2:::print.xml_nodeset(使用三个冒号)。

还有一个sloop包可以告诉您对于给定的调用将调用哪个 S3 方法。例如

sloop::s3_dispatch(print(a))
=> print.xml_nodeset
 * print.default

您可以向包维护者提出问题,要求提供该函数的文档,但如果作者没有包含它,R 就无法真正为您提供文档。


推荐阅读