2017-11-07 9 views
2

ここをクリックしてください。私は(いくつかの同一の変数を保持することによって)サブセットを作成したい(同じ変数を持つ)複数のデータフレームを持っています。複数のデータフレームをループするR

私がすることで、データフレームの名前を保存:

for(d in dfs) {assign(paste0(d,"_subset"), subset(d, select = c(x, y, z)))} 

しかし、それはで「D」のようには見えません:私は、私は以下のことでサブセットを作成できると思っていた

dfs<-Filter(function(x) is.data.frame(get(x)) , ls()) 

サブセット関数はデータセットとして認識されます。誰も助けることができますか?

は、通常は、ご使用の環境でいただきました!の名前を知っている:ベンさんのコメントについては詳しく説明し

+2

リストにあなたのデータフレームを入れて、むしろ '()' + '')(割り当てます使用するよりも、要素を操作するために '' lapply'またはfor'ループを使用する方が簡単/より多くの慣用的。 .. –

答えて

0

ls()get()を使用すると、その環境内の唯一のものであれば、その環境内のデータフレームのリストを取得できます。したがって、irisまたはmtcarsがある場合は、それもつかまります。

これで、作成したデータフレームの明示的なリストを作成した方がよいでしょう。

このリストを取得したら、ループを使用できますが、Rの処理方法は、applyファミリの関数を使用することになります。これは、リストまたはベクトルの要素に対して関数を反復処理します。

この場合、lapplyと匿名関数を使用して、データフレームのリストの各要素をサブセット化します。サブセットされたデータフレームのリストが返されます。

list <- list(mtcars, mtcars, mtcars) 

lapply(list, function(x) subset(x, select = c(mpg, cyl))) 
関連する問題