0

既存の行列のセットから複数のデータ フレームを作成するループを作成したいと思います。コードを使用してこれらをインポートして作成しました:

temp<-list.files(pattern="*.csv")
ddives <- lapply(temp, read.csv)

したがって、「ddives」は、csv ファイルのセットのセットです。コードのループ バージョンを使用して、これらのそれぞれからデータ フレームを作成したいと思います。

d.dives1<- data.frame(ddives[1])
4

3 に答える 3

7

質問に答える前に、用語について簡単に説明します。

  1. の結果はread.csv()ですdata.frame
  2. の結果はlapply()ですlist

これで、データ フレームのリストができました。

リスト内のデータ フレームが同じ構造 (つまり、列数とクラスが同じ) であると安全に想定できる場合rbind()は、 を使用して、データ フレームのリストを単一の に結合できますdata.frame

これを簡単にするためにdo.call()、次のように使用できます。

do.call(rbind, ddives)

do.callリスト要素を引数として使用して、関数から呼び出しを構築します。名前が付けられている場合は、名前付き引数として渡されます。そうでない場合は、順番に (R では常に) 渡されます。この場合rbind、リスト内のすべての要素に適用されるため、単一のdata.frame.


私はあなたのデータを持っていないので、これは明らかにテストされていません. しかし、一般に、do.callこのタイプの操作には便利な関数です。

于 2012-07-11T16:01:54.347 に答える
1

これはあなたが投稿した以前の質問のフォローアップであるため、これを試してください:

for (i in 1:length(ddives)) assign(temp[i], ddives[[i]])
于 2012-07-11T16:06:05.890 に答える
0

コードのループ バージョンが本当に必要な場合は、次のようになります。

for (i in 1:length(ddives)){
  assign(paste("d.dives", i, sep =""), ddives[i])
}
于 2012-07-11T16:15:37.990 に答える