正式なファンクション引数に関数外のデフォルト値があるかどうかを確実にどのように伝えることができますか?以下の例ではファンクション引数のデフォルトなし
、私は以下のテストは、引数を持っているか、デフォルト値を持たないときに見つけることが失敗しないことを保証したいと思います:
myfun <- function(a, b=1, ...) {}
formals(myfun)
for (n in names(formals(myfun))) {
if (is.name(formals(myfun)[[n]])) {
cat(n, "has no default value\n")
} else {
cat(n, "has a default value:", formals(myfun)[[n]], "\n")
}
}
is.name
は私のベストのテストでありますしかし、私はそれが名前であり、それが空であることを両方とも見たいと思うでしょう(またはより良いが、より確かにmissing
のようなより確定的なテストは機能の中で提供するでしょう)。
@jenesaisquoiを持っていない - それは間違いなくきれいですベースケースの場合。 @RichardScrivenが先に指摘したように、空の文字の既定値として定義されている '' 'を扱うケースをキャッチしません。 –
「同義」がおそらく良いでしょう。 OPがこれをより大きな規模で使用している場合、このコンテキストでスピードの利点があるため、「nzchar」と一緒に行きました。 –
@ jenesaisquoi:合意。 '=='はここではあまり良くありません。 –