1. ホーム
  2. r

[解決済み] R: `rm(list=ls())` は何をするのですか?[重複]です。

2022-02-09 10:46:03

質問

他の人が書いたRのコードを見ていたら、ドキュメントの冒頭の方に rm(list=ls()) . が何なのか調べてみました。 rm 関数は、私が知る限り、ワークスペースから指定された変数を削除するものです。 x=3 を実行した後 rm(x) という変数があります。 x は、あたかもそれが代入されていなかったかのように振る舞います(したがって、たとえば、それを印刷しようとするとエラーが発生します)。

しかし、その後のコードは、空のリストを削除しているように見えるので、もし私がこれを正しく理解しているならば、奇妙なことです。 つまり、まったく何もしていないのですね? このコードがここにあるのは何か理由があるのでしょうか?

解決方法は?

のパラメータリストが正しくないと思います。 rm 関数は紛らわしく、少なくとも私がRを使い始めた頃はそうでした。 list はリストではなく、文字ベクトルであることが前提です。そのため ls -関数は呼び出された環境で見えるすべての名前付きオブジェクトの文字ベクトルを返し、デフォルト値を持っています。 envir 引数で指定します。コンソールで実行した場合、デフォルトの環境はグローバル環境となります。つまり、これはすべての "visible"オブジェクトをクリアします(ただし、他の名前空間や環境に定義されているようなものはクリアされません)。 base , graphics , stats または他のロードされたパッケージの名前空間。

では、次に ?ls?rm を読んで、その能力をより深く理解することができます。特に、新しい使用者は、RGBの違いについてよく理解しておく必要があります。 names すなわち symbols と、その文字表現との比較。そのため ls 関数は、R の実装の言語レベルにまで踏み込んで、言語レベルではない値を返しているのに対して rm 通常、言語レベルの入力を受け取ります。(この場合のように) その "list"- 引数に、... R リストではない値が提供される場合を除きます。おわかりいただけたでしょうか?たぶん、願わくば、もうちょっとだけ。