9

問題:

R コードのスコープ内でローカル変数を定義する方法。

例:

C++ では、次の例はスコープを定義し、スコープ内で宣言された変数は外部コードでは未定義です。

{
     vector V1 = getVector(1);
     vector V1(= getVector(2);
     double P = inner_product(V1, V2);
     print(P);
}
// the variable V1, V2, P are undefined here!

注: このコードは、アイデアを説明するためのものです。

このプラクティスには、次の利点があります。

  • グローバル名前空間をクリーンに保つ;
  • コードの簡素化;
  • 特に変数が初期化せずに再利用される場合に、あいまいさを取り除きます。

R では、この概念は関数定義内にのみ存在するように思えます。したがって、前のサンプル コードを再現するには、次のようにする必要があります。

dummy <- function( ) {
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
}
dummy( );
# the variable V1, V2, P are undefined here!

または、さらにあいまいな方法で、匿名関数を宣言して関数呼び出しを防止します。

(function() { 
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
})()
# the variable V1, V2, P are undefined here!

質問

ローカル変数を作成するよりエレガントな方法はありますか?

4

2 に答える 2

13

を使用しlocalます。あなたの例を使用して:

local({ 
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
})
# the variable V1, V2, P are undefined here!
于 2013-02-10T00:35:20.913 に答える
1

environment変数を定義できる新しい場所を作成できます。これは、関数内のローカル スコープが定義される方法です。

詳細については、こちらをご覧ください。

ヘルプenvironmentも確認してください。つまり、R コンソールに入力します。?environment

于 2013-02-10T00:26:46.053 に答える