是否可以列出可以为包设置的所有全局选项?

Is it possible to list all the global options that can be set for a package?

tibble的小插图中,我了解到可以通过options在全局选项中进行一些更改来控制打印的外观。但是,我在 R 中找不到有关此选项的任何手册。我什至不知道可以将哪些字段添加到包的全局选项中。所以问题是:

对于一个包,我们可以得到一个字段列表(比如 tibble.print_maxtibbletibble.print_minutilsBioC_mirror)在知道它们之前通过 options 在 R 中设置?

可设置选项的处理方式由包作者自行决定(是否将它们包含在 .Options 中,是否隐藏它们等)。看起来 tibble 包有一个隐藏变量 op.tibble,它显示了可用的选项。

tibble:::op.tibble
# $tibble.print_max
# [1] 20
# 
# $tibble.print_min
# [1] 10
#
# $tibble.width
# NULL
#
# $tibble.max_extra_cols
# [1] 100

所以下面会给出包中可用选项的名称。

names(tibble:::op.tibble)
# [1] "tibble.print_max"      "tibble.print_min"     
# [3] "tibble.width"          "tibble.max_extra_cols"

请注意,我通过

找到 op.tibble
grep("op", ls(getNamespace("tibble"), all=TRUE), value=TRUE)
# [1] "op.tibble"  "stopc"      "tibble_opt"

然后分别查看这些项目。也许其他作者可能会做类似的事情。但是没有定义包中选项的通用规则。

鉴于缺乏如何处理外部(甚至内部,据我所知)包中的选项所需的实践(例如,在 CRAN 上),也许最通用的方法是这样的:

  1. CRAN mirror on GitHub. For example, here's tibble 上找到包裹。

  2. 在存储库中搜索 "option" 以查找 all references to "option" in the package's code

  3. 通过这个搜索。知道要寻找什么需要一些敏锐的眼光,但我就是这样了解到 tibble 的所有选项都列在主包帮助页面 (?"tibble-package") 上,因为我通过搜索找到 these lines

如果您将存储库克隆到您的计算机并使用命令行工具,则第 3 步可以更好地自动化,例如

cd package_dir
grep option R/*

(这与上面的非常相似,但具有 grep 的全部灵活性)

只是为了进一步确认,这种方法也让我找到了 data.table and xtable 的正确位置。