クラスごとにグローバル環境内のオブジェクトのリストをサブセット化したいと考えています。私は特定のクラスなどに属しているオブジェクトの名前を持つ短いリストを作成できるようにしたいと思いグローバル環境内のオブジェクトリストをサブクラス別に設定する
LS()
を実行することによって作成されたリストから
すなわち、 XTSまたは事前
クラスごとにグローバル環境内のオブジェクトのリストをサブセット化したいと考えています。私は特定のクラスなどに属しているオブジェクトの名前を持つ短いリストを作成できるようにしたいと思いグローバル環境内のオブジェクトリストをサブクラス別に設定する
LS()
を実行することによって作成されたリストから
すなわち、 XTSまたは事前
でPOSIXlt
おかげであなたはls()
を取得し、すべてのクラスをチェックすることができます。それは、ls()
の後のフィルタリングのように、特にそうではないかもしれません。 get(var)
# populate global environment with some vars.
rm(list=ls())
a <- 1
b <- 2
c <- 'foo'
d <- 'asdf'
lst <- ls()
# return everything 'numeric':
lst[sapply(lst,function(var) any(class(get(var))=='numeric'))]
# 'a' 'b'
はvar
の文字列に対応する変数を取得し、そうvar
が"a"
ある場合、get(var)
は(変数a
の値である)1を取り出します。
@VincentZoonekyndは以下のように注意します。オブジェクトは複数のクラスを持つことができます。 Soo class(some_xts_object)
はc("xts","zoo")
です。xts
オブジェクトを検索すると上記の方法でsome_xts_object
が返されますが、zoo
オブジェクトを検索するとでもが検索されます。あなたが望むよう
objs = mget(ls(envir=.GlobalEnv), envir=.GlobalEnv)
names(Filter(function(i) inherits(i, "lm"), objs))
機能(i)は(I、「LM」)を継承して調整することができます。
これは、オブジェクトが1つのクラスにのみ属することを前提としています。これは常にそうであるとは限りません。たとえば、 'xts'オブジェクトもクラス' zoo'です。 –
ああ、私はあなたが複数のクラスを持つことができないことを理解していませんでした。 c( 'xts'、 'zoo');これは頼りになるかもしれませんか?) –
'class(some_xts_object) some_xts_object) 'は常に少なくとも' xts'と 'zoo'を含んでいますが、もっと多くを含むことができます。私は通常、%class(u) 'で' 'xts"%を使用します。これはあなたの提案に相当します。 –
これは、オブジェクトを検査するinherits
を使用してその上にわずかなねじれがあります。
+1は、この例では、メモリ使用量を大幅に増加させません。 –
http://stackoverflow.com/questions/5158830/identify-all-objects-of-given-class-for-further-processing – Chase