No.22784 【R】リストに格納された複数データフレームのファイル保存(ループを使わない)  【明石】 2019/07/29(Mon) 17:25

青木先生 様;

お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。
改めて,御礼を申し上げます。

青木先生にご教示いただきたいことが出てきました。
何卒どうぞよろしくお願いいたします。

--------------------------------------------------

リストに格納された複数データフレームのファイル保存を,
ループを使わない書き方について,ご教示いただければ大変に助かります。

以下,例示いたします。

データフレーム dat を,カラム名"支店名"でファイル分割したとします。
dfs <- split(dat, dat$支店名)
支店名ごとに分割されたデータフレーム群を,csvファイル保存します。
n <- length(dfs)
names <- names(table(dat$支店名))

for (i in 1:n) {
 fn <- paste(names[i],".csv", sep="")
 write.csv(dfs[[i]],fn, row.names=F)
}
ループを回さないで,apply関数群などを用いて,シンプルに書けるようならば,
ご教示をいただきたいと思います。

お手数をおかけいたします。

No.22785 Re: 【R】リストに格納された複数データフレームのファイル保存(ループを使わない)  【青木繁伸】 2019/07/29(Mon) 22:16

iris データセットでやってみましょう

Species で 3 分割
iris2 <- split(iris, iris$Species)
書き出す。junk への代入は,ゴミを表示させないためだけ。
junk <- sapply(names(iris2), function(n) write.csv(iris2[[n]], paste(n, ".csv", sep="")))
あまりわかりやすいものではないですね。
貴方が示した for ループを使うほうがずっと分かりやすい。

No.22786 Re: 【R】リストに格納された複数データフレームのファイル保存(ループを使わない)  【明石】 2019/07/30(Tue) 06:13

青木先生 様;

お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。

今回も,大変に良い勉強をさせていただきました。

ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る