1

次の例のように、別の関数に埋め込まれた関数の値を取得するにはどうすればよいですか?

message <- function() {
    inside.message <- function() {
        return("inside.message")
    }   
}

run.f <- function() {
    return.inside.mesage <- message()
    print(return.inside.mesage)
}           

run.f() # We do not get "inside.message"

よろしくお願いします。

4

3 に答える 3

2

あなたのコードで message() は関数を返します。それを呼び出すには、ブラケットのペアを追加する必要があります。

> message()()
[1] "inside.message"

コード内で message() を message()() に置き換えると、必要なことが行われます。

于 2012-05-22T21:35:41.863 に答える
1

あなたが書いたように、明示的に何も返さず、内部で評価された最後の式であるためmessage、関数を返します。inside.messagemessage

の評価 から値を返すようにしたいようですがinside.message、これには に別のコード行が必要ですmessage

message <- function() {
    inside.message <- function() {
        return("inside.message")
    }
    inside.message()
}
于 2012-05-22T21:33:11.583 に答える
1

あなたが書いたように、関数は関数messageを返します。これを評価すると、「inside.message」が返されます。したがって、R に「inside.message」を出力させる方法はいくつかあります。

最初の方法:

関数に、関数自体を返すのではなく、関数が評価されて結果が返されるように、次messageの行を追加します。return(inside.message())inside.message

message <- function() {
  inside.message <- function() {
    return("inside.message")
  }
  return(inside.message())
}

message()
# "inside.message"

次に、評価run.f()すると「inside.message」も出力されます。

2 番目の方法:

そのままmessageにして、次のように変更run.f()します

run.f <- function() {
  return.inside.mesage <- message()
  print(return.inside.mesage())
}

message()上記では、 によって返された関数をオブジェクトに割り当ててから、return.inside.messageその関数を評価しています。

于 2012-05-22T21:33:44.593 に答える