5

このような疑似コードを使用して、不足している引数をデフォルトで関数に渡すための解決策を見つけました。

wrapperfX<-function(x)
{
    ...<-if(missing(x){
            list()
        }else{
            list(x=x)
        }
    targetf(...)
}

これらのことはRでどの程度許可されていますか?

4

2 に答える 2

5

あなたが探しているトリックはdo.call、関数を呼び出して引数をリストとして指定できるようにすることです。

wrapperfX <- function(x){
  dots<-if(missing(x)){
    list()
  }else{
    list(x=x)
  }
  do.call(targetf,dots)
}

これにより、リスト要素に名前がある場合は、名前付き引数も指定できます。

> do.call(log,list(x=10,base=10))
[1] 1

と同等です

log(x=10,base=10)

呼び出している関数がドット-ドット-ドットで表現されている場合、引数は、関数呼び出しに配置した場合と同じ方法で一致します。

[また、適切に括弧がありませんでしたmissing((x){:)]

于 2013-09-07T08:48:14.477 に答える