如何查看R语言函数中某一参数的所有合法可选取值?
R函数单个参数合法取值查询方法
R 没有内置的通用命令可以直接输出任意函数某一参数的所有合法可选值,因为不同函数的参数校验逻辑差异极大,部分参数的合法取值是动态生成、依赖输入上下文或者通过类继承判断的,无法提前统一穷举。你可以通过以下几种常用方法自行排查:
- 优先查看官方帮助文档的参数说明板块
运行?函数名(例如?lme4::lmer)打开函数帮助页,找到对应参数的说明条目,符合CRAN规范的包文档都会明确标注枚举类参数的所有可选值,以及非枚举类参数的类型、格式要求。很多用户只看文档开头的示例和用法,容易漏掉后半部分的详细参数说明。 - 提取
match.arg校验类参数的可选值
如果参数是通过R的match.arg()函数做取值校验的,定义时会把所有合法值写在参数默认值的向量里,直接运行formals(函数名)$参数名即可提取所有可选值,例如:
运行formals(stats::t.test)$alternative,会返回c("two.sided", "less", "greater"),就是该参数的全部合法取值。 - 查看函数源码的参数校验逻辑
如果文档未说明、formals也仅返回单个默认值,可以直接打印函数源码,搜索对应参数的判断逻辑。例如查看lmer的源码只需运行lme4::lmer,找到对应参数的校验代码,就能明确它的取值要求,比如control参数要求是lmerControl类的对象,对应的所有配置项可以通过?lmerControl进一步查看。 - 通过报错提示获取枚举值列表
针对枚举类参数,可以故意传入一个明显不合法的取值,函数的match.arg校验报错会直接列出所有合法值,例如给t.test的alternative参数传入"test",报错信息会明确提示:'arg' should be one of “two.sided”, “less”, “greater”。
注:如果参数的要求是特定类型的对象(比如数值向量、data.frame、自定义S4类等),这类参数没有固定的穷举可选值,只能通过文档确认它的类型、格式规则。
内容的提问来源于stack exchange,提问作者Tzen
相关产品推荐
相关产品推荐

