2016-06-28 6 views
1

R関数にデフォルト引数を指定すると、この引数は関数で最初に使用されたときに評価されます。どのように初期の引数をエレガントな方法で早期に評価することが可能ですか?例:R:デフォルト引数が早期に評価されていることを確認してください。

f <- function(x, y = 2 * x) 
{ 
    if(x < 0) x = 10 
    y 
} 

f(1) ## Returns 2 
f(-1) ## Returns 20 but I would like it to return -2  

おかげ

+0

関数の先頭に 'force(y)'を追加します。しかし、私はあなたが何をしているのか理解していません。最初の値にかかわらず2番目の引数を返す関数であり、無駄な割り当てがかなり奇妙に見えます。 – nicola

答えて

1

答えが見つけるのは難しいことではなかったです。関数 'force'がトリックを行います:

f <- function(x, y = 2 * x) 
{ 
    force(y) 
    if(x < 0) x = 10 
    y 
} 

f(1) ## Returns 2 
f(-1) ## -2 
関連する問題