これは基本的な R の質問です。R には環境の概念があります。では、それにはどのような目的があり、いつ複数を開始する必要があり、それらを切り替えるにはどうすればよいでしょうか? 複数の環境 (.Rdata ファイルのコンテンツを検索する以外) の利点は何ですか?
3 に答える
環境の考え方は重要であり、ほとんどの場合、意識せずに常に使用しています。R を使用しているだけで、特別なことをしていない場合は、環境を間接的に使用するだけで十分であり、明示的に環境を作成して操作する必要はありません。より高度な使用方法に慣れて初めて、より多くのことを理解する必要があります。環境を (間接的に) 使用する主な場所は、すべての関数に独自の環境があるため、関数を実行するたびに新しい環境を使用することになります。これが重要な理由は、関数が「x」という名前の変数を使用し、「x」という名前の変数がある場合、コンピューターはそれらをまっすぐに保ち、必要なときに正しい変数と「x」のコピーを使用できることを意味するためです。 " は関数版で書き直せません。
環境を使用する可能性のあるその他のケース: 各パッケージには独自の環境があるため、2 つのパッケージを同じ名前の内部関数で両方ともロードでき、互いに干渉しません。グローバルまたは作業環境ではなく、新しい環境をアタッチし、関数定義をその環境にロードすることで、ワークスペースを少しきれいに保つことができます。独自の関数を作成し、関数間で変数を共有したい場合は、環境について理解する必要があります。環境を使用して、値渡しの代わりに参照渡しをエミュレートできます (これらのフレーズを認識していない場合は、おそらく問題にはなりません)。
environment
sは順序付けられていないsと考えることができますlist
。どちらのデータ型も、ハッシュテーブルのデータ構造のようなもの、つまり名前から値へのマッピングをユーザーに提供します。sに順序付けがないため、同様のタスクのsenvironment
と比較してパフォーマンスが向上します。list
アクセスは機能[[
し$
、両方で機能します。
A nice fact about environment
s which is not true for list
s is that environment
s pass by reference when supplied as function arguments, offering a way to improve performance when working large objects.
個人的には、環境を直接操作することはありません。代わりに、スクリプトを関数に分割します。これにより、再利用性が向上し、構造が強化されます。さらに、各関数は独自の環境で実行されるため、変数などへの干渉を最小限に抑えることができます。