2016-11-25 4 views
0

おそらく簡単な質問ですが、自分自身で把握することはできません。R:上位レベルの関数に値を代入する

私は関数にネストされた関数を持っています。私は何を達成しようとしていることは、その親でネストされた関数から(私は<<-を使用すると危険なことができることを読んだことがあるassign機能を使用して、)値を割り当て、そこにそれを使用することです:

myfun <- function(m) { 
    m*3*y 
    f1 <- function() { 
    assign(x = y, value = 2, envir = parent.frame()) 
    } 
    f1() 
} 

しかし、エラーがありますまた

Error in myfun(m = 5) : object 'y' not found 

を、私は等の機能にネストされた関数内でネストされた関数内でネストされた関数を、持っている、と私は選択したい場合は、上のレベルに値を割り当てるためにするものを:返さ最低レベルの関数から?

+0

'function(m)'の変数 'y'とは何ですか? –

+0

@Carles Mitjans: 'y'は、関数f1で定義された2の値をとります。 – panman

+0

'myfun'の' m * 3 * y'の最初の行に 'y'が定義されていないので、そのエラーが発生します。 –

答えて

1

2点。 yで計算する前にf1()を実行する必要があります。 x引数はassignです。関数は文字を取ります。

myfun <- function(m) { 
    f1 <- function() { 
    assign(x = "y", value = 2, envir = parent.frame()) 
    } 
    f1() 
    m*3*y 
} 

myfun(5) 
+0

ああ...そうです、ありがとうございます。 – panman

関連する問題