複数の data.csv ファイルを含むフォルダーがあり、各ファイルには同じ数の変数が含まれていますが、それぞれ異なる時刻からのものです。R では、それらをすべて個別にインポートするのではなく、同時にインポートする方法はありますか?
私の問題は、インポートするデータ ファイルが約 2000 個あり、次のコードを使用してそれらを個別にインポートする必要があることです。
read.delim(file="filename", header=TRUE, sep="\t")
あまり効率的ではありません。
ベストアンサー1
次のような結果になると、各データ フレームが 1 つのリスト内の個別の要素として表示されます。
temp = list.files(pattern="\\.csv$")
myfiles = lapply(temp, read.delim)
これは、これらの 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 つのリストに残しておく方がよいでしょう。