3

現在の環境から、2つを除くすべてのオブジェクトを削除したいのですが、次のようになります。

rm(list=setdiff(ls(),c("current_object_a","current_object_b")))

しかし、関数内で呼び出したいのですが。ここで実行すると、グローバル環境ではなく関数内の環境変数を削除しているため、何も起こりません。

4

2 に答える 2

9

lsとの両方に環境を指定する必要がありますrm

rm(list = setdiff(ls(globalenv()),
                  c("current_object_a", "current_object_b")),
   pos = globalenv())

しかし、本当に、なぜあなたはこれをしたいのですか?関数内からグローバル環境から物事を削除することは悪いことのように思えます。

于 2012-10-30T19:48:17.793 に答える
6

posまたはenvir引数のいずれかで環境を指定できます

rm(list=setdiff(ls(pos=globalenv()),
                c("current_object_a","current_object_b")), 
   pos=globalenv())

から?rm

'pos'引数は、いくつかの方法のいずれかでオブジェクトを削除する環境を指定できます。整数('search'リスト内の位置)として。検索リスト内の要素の文字列名として。または「環境」として(「sys.frame」を使用して現在アクティブな関数呼び出しにアクセスすることを含む)。'envir'引数は、環境を指定するための代替方法ですが、主に下位互換性のためにあります。

于 2012-10-30T19:42:36.537 に答える