2017-11-21 4 views
1

私は愚かなことに、適切なコミットをせずに特定の問題を解決しようとしているRプロジェクトで、新しいdata_framesのロードを作成していました。すべての実用的な名前とギリシア文字のほとんどを見てきたので、私は今、 'bob'、 'might.work'、 'almostthere'のような名前のdata_frameオブジェクトでいっぱいの環境を持っています。私はループ関数(lapplyまたはそれ以外)を使用して、環境内の各データフレームオブジェクトに関する何かを示すいくつかのインジケータを返したいと思います。私はその後、返品に基づいて清掃/削除することができます。プロジェクト環境に格納されているすべての特定のオブジェクトに関数を呼び出すことはできますか?

Rプロジェクト環境ですべてのdata_framesにアクセスするためにlapplyを使用することは可能ですか?このようなもの?

lapply(environment, function (x){ 
    if(is.dataframe(x)){ 
    dplyr::glimpse(x) 
} 
} 

ありがとう。

答えて

3

eapply()機能環境内のオブジェクトの上に簡単に反復処理し

eapply(globalenv(), function(x) if (is.data.frame(x)) dplyr::glimpse(x)) 
+0

うわー!これは完璧です!ありがとう、考えて、私はただ一つの手紙だった。 – elliot

1

確かに可能です!

lapply(ls(),function(x){ 
    o = get(x,envir = globalenv()) 
    cat("if"(is.data.frame(o),paste0(x," is a data frame!\n"),"Nope.\n")) 
}) 
  • ls()(デフォルトではグローバル)環境内のすべてのオブジェクト名の一覧が表示されます。
  • これは名前だけなので、我々は値をgetが、(私たちは、この時点での機能環境にいるので)、地球環境を指定する必要が
  • その後、私はそれがデータフレームだかどうかをcat、しかしすることができますoオブジェクトで何でもできます。
0

次の関数は.GlobalEnvに環境environでクラスdata.frameから継承するオブジェクト、デフォルト値を返します。

getDataFrames <- function(environ = .GlobalEnv){ 
    l <- ls(name = environ) 
    res <- NULL 
    for(i in seq_along(l)){ 
     r <- inherits(get(l[i], envir = environ), "data.frame") 
     if(r) res <- c(res, l[i]) 
    } 
    res 
} 

getDataFrames() 
関連する問題