8

ワークスペース (グローバル環境) に多くのオブジェクトがあり、それらのほとんどをリストに格納したいとします。簡単な例を次に示します。

# Put some objects in the workspace
A <- 1
B <- 2
C <- 3

オブジェクト A と C をリストに格納したいと思います。もちろん、私はそれを明示的に行うことができます:

mylist <- list(A,C)

ただし、ワークスペース内のオブジェクトの数が非常に多い場合、これはかなり面倒になります。したがって、私はこれを別の方法で行いたいと思い、次のことを試みました。

mylist <- list(setdiff(ls(),B))

しかし、ワークスペースにオブジェクトの名前を保存するだけなので、これは明らかに私が望むものではありません。

これを行う方法について何か提案はありますか?

どうもありがとう!

4

3 に答える 3

14

別のオプションは、次を使用することmgetです。

mget(setdiff(ls(),"B"))
于 2013-09-19T14:34:15.317 に答える
2

mgetこの状況では間違いなく最も使いやすいです。ただし、 と を使用して同じことを実現できas.list.environmentますeapply

e2l <- as.list(.GlobalEnv)
# or: e2l <- as.list(environment()) 
# using environment() within a function returns the function's env rather than .GlobalEnv
e2l[! names(e2l) %in "B"]

# the following one sounds particularly manly with `force`
e2l <- eapply(environment(), force)
e2l[! names(e2l) %in "B"]

そしてワンライナー:

 (function(x) x[!names(x)%in%"B"])(eapply(environment(), force))
 (function(x) x[!names(x)%in%"B"])(as.list(environment()))
于 2013-09-19T19:19:35.627 に答える