1. ホーム
  2. r

[解決済み】複数の.csvファイルを一度にインポートする方法は?

2022-04-15 06:45:56

質問

複数のdata.csvファイルを含むフォルダがあり、それぞれが同じ数の変数を含んでいますが、それぞれ異なる時刻のものであるとします。 それらをすべて個別にインポートするのではなく、同時にインポートする方法はRにあるのでしょうか?

私の問題は、インポートするデータファイルが約2000個あり、コードを使用するだけでそれらを個別にインポートしなければならないことです。

read.delim(file="filename", header=TRUE, sep="\t")

はあまり効率的ではありません。

解決方法は?

以下のようにすると、各データフレームが1つのリストの中の別の要素として表示されるようになります。

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)

これは、これらのCSVが1つのディレクトリ(現在の作業ディレクトリ)にあり、すべてのCSVが小文字の拡張子を持っていると仮定しています。 .csv .

これらのデータフレームを1つのデータフレームに結合したい場合は、他の回答で、次のようなものを使った解決策を参照してください。 do.call(rbind,...) , dplyr::bind_rows() または data.table::rbindlist() .

もし本当に各データフレームを別々のオブジェクトにしたいのであれば、それはしばしば望ましくないことですが、次のようにすることができます。 assign :

temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))

または assign で、(1) ファイル名をきれいにする方法を示すため、また (2) list2env は、次のように試してみてください。

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         read.csv), envir = .GlobalEnv)

しかし、やはり1つのリストにまとめておいた方が良い場合が多いようです。