2013-02-19 3 views
15

リストにたくさんのデータフレームを簡単に入れることは可能ですか? ではなく、次の方法のように、手動でそれぞれの名前を書くことの意味:私はすべてのデータフレームが私の仕事スペースにリストに複数のデータフレームを入れる(スマートな方法)

list_of_df <- list(data_frame1,data_frame2,data_frame3, ....) 

をロードしました。 リストを使用して、すべてのデータフレームをループする(各データフレームで同じ操作を実行する)。

+0

@Imoと@EdChum;この質問は、あなたがそれを大公として公表した質問の前に投稿されました。日付を見てください! –

答えて

20

あなたはgetls()を使用することができます。

l.df <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x)) 

これは、現在の環境のワークスペースからすべてdata.framesをロードします。 @agstudyが示唆するよう

あるいは、あなたが必要とちょうどdata.frame Sをロードするためにパターンを使用することができます。

l.df <- lapply(ls(pattern="df[0-9]+"), function(x) get(x)) 

ロード数字の任意の量に1が続くdfで始まり、現在の環境内のすべてのdata.frame秒。

+0

オブジェクトの名前をそのまま保持する方法はありますか?この方法はうまくいくが、データフレーム名は抽出されたものではない。個別に割り当てるよりも良い方法はありますか?ありがとう。 – Anusha

+0

@Anusha、申し訳ありませんが、私はあなたが意味するものをかなり得ていません。リストの各要素の名前がこれらのdata.framesの名前であるdata.framesのリストが必要だと言っていますか? – Arun

+0

はい。オブジェクトは名前で識別されていますが、リストには含まれていません。このステップ自体で選択されたデータフレームの名前を割り当てることをお勧めします。 – Anusha

6

あなたは、例えば、特定のパターンでlsを使用することができます。

一部data.frames:たとえば、次のように

data.frame1 <- data.frame() 
data.frame2 <- data.frame() 
data.frame3 <- data.frame() 
data.frame4 <- data.frame() 

list(ls(pattern='data.fra*')) 
[[1]] 
[1] "data.frame1" "data.frame2" "data.frame3" "data.frame4" 
+4

これはオブジェクトの内容ではなく、名前のリストを提供します。 –

6

断然最も簡単な解決策は、あなたがそれらを作成リストにdata.frame年代を置くことであろう。ただし、オブジェクト名の文字リストを持っていると仮定すると:

あなたは、この(10個のオブジェクトのための一例)のようなリスト構築でき
list_df = lapply(list_object_names, get) 

list_object_names = sprintf("data_frame%s", 1:10) 

または現在のワークスペース内のすべてのオブジェクトを取得しますリストに:

list_df = lapply(ls(), get) 
names(list_df) = ls() 
関連する問題