75402


お世話になっております。R言語についてお伺いさせて頂きたく存じます。  
データとして100個のcsvファイルを保有しており、次のような規則性のあるデータ名です。

0001,0002,0003・・0010,0011,0012,・・0099,0100

これらのデータ名を表現するにはfor構文上でformatC関数を用いて作成するところまではわかりました。

次にそうして作成したデータ名を用いてcsvファイルを連番にしたがって読み込み、  
次のような名称をもつオブジェクトに格納していきたいと考えています。

data0001,data0002,・・・・,data0100

そのために次のようにコードを書きました。

[code]

    for(i in 1:100){
      i<-formatC(i,width=4,flag="0")
      df<-paste(i, ".csv", sep="")   
      eval(parse(text=paste("data", i, "<-read.csv('", df, "')", sep=""))) 
    }
    
[/code]

参考にしたウェブサイトは下記です。

[Rで複数のcsvファイルを読み込む -
Qiita](https://qiita.com/SuRuRa/items/2d7cbb7559ac0002ccf0)

しかし、他の質問スレッドを拝見したり、試行錯誤をしても、うまくいきませんでした。  
申し訳ありませんが、このコードのどこにエラーがあるのかをご教示頂けないでしょうか。


CC BY-SA 4.0
2021-04-17T07:02:37.687
75337
2021-09-02T09:51:22.690
2021-05-07T04:07:39.947
3060
44769
question
r
連番として名付けたオブジェクトの名称を用いて、複数のCSVファイルを読み込む方法


「ある場所にあるCSVファイルを全て読みこみたい」との解釈でよろしければ、  
ファイル一覧を取得してしまう方が早いと思いましたがいかがでしょうか？

下記の二行だけで済みますよ

[code]

    pacman::p_load(tidyverse)
    
    # data リストに、 0001-0100 の tibble を格納
    f <- list.files(path = [保存場所], pattern = "*.csv", full.names = TRUE)
    data <- lapply(f, read_csv) 
    
[/code]

参考までに、リストの操作例も記載します：

[code]

    # リスト操作： 「0010のデータが欲しい」時は、このようにインデックスを指定します
    print(data[10])
    
    # リスト操作：「インデックスは、レンジでも指定できます
    print(data[10:20])
    
    # リストは、このように縦結合することもできます
    alldata <- data %>% bind_rows
    
[/code]

また read.csv() は非常に古い関数で、遅い上に勝手にfactor化する問題などがありますので、  
余程の理由がない限り read_csv() を使った方がよろしいかと思います。（3倍くらい速いです）


CC BY-SA 4.0
2021-04-20T11:29:49.490
75402
2021-09-02T09:51:22.690
2021-09-02T09:51:22.690
32676
32676
75337
answer