R函数参数-是否可以强制填充一个或另一个(但不能同时填充)?

时间:2019-01-10 19:59:19

标签: r function parameter-passing logical-operators xor

在R中,可以通过为参数指定默认值来设置带有可选参数的函数。例如,如果我的参数是x并且y = 0,则该函数需要输入x。如果给出了y,它将使用y的输入,但是如果没有给出y的值,它将设置y = 0。

有时我至少需要两个参数之一,但是如果输入不正确,则同时获取两个参数可能很危险。

作为我正在考虑的示例,考虑数据集可能包含用于“班次”(“上午”,“下午”,“夜晚”-一个因素)和一天中的时间的列。如果我有一天的时间,则可以计算出班次,而不必获取该参数的值。如果我将班次作为输入,则不需要一天中的时间。我想知道事件在一天中的什么时间发生,所以我需要一条或另一条信息。不幸的是,当我同时获得两个输入时,可能会出现不匹配的情况-输入时间可能是8 AM,而输入班次可能是PM班次。那是个问题。

是否可以在功能参数(在功能定义中)中配置此要求(获取时间或获取时间,但不能同时获取),还是必须将两者都指定为可选参数并执行函数中的检查(即至少一个或另一个但不匹配)?

1 个答案:

答案 0 :(得分:1)

不,您不能在函数签名中执行此操作。

您的选择是:

  1. 始终接受两个参数,在提供另一个参数时将忽略其中一个。这并不罕见,有时您会在文档页面上看到注释,例如“如果参数foo不是NULL,则忽略该参数”。
  2. 手动检查相互排斥性,如果同时提供了两者,则引发错误或警告。