私は自動的に開きたいデータをいくつか持っていますが、いくつかの値をとり、すべてを1つのデータフレームにまとめます。Improove/for-Loop in Rを回避
最初にファイル名を検索し、1つずつ(forループ内で)開き、それらを一緒に設定します。コードは正常に動作します。しかし、多くのファイルがあるので、時間がかかります。現時点で私はこれを行うための他の方法は考えられません...私の質問は、プロセスを固定するオプションはありますか?ループを使用しない場合がありますか?特に第2のループを避ければ、性能が向上する。
私はコードの最小限の例を作ろうとしました。 (例えばdata_sなど)一部の行は、この例では多くの意味を作るいけないが、実際には、彼らは、「データ」の構造ザッツ;-)
all.files <- list.files(recursive = T)
df <- data.frame(matrix(, nrow=1000, ncol=242))
for (i in 1:length(all.files) {
Data <- read.table(all.files[i]), header=F)
name <- Data[i,2]
data_s <- i+6
for (k in 1:240){
df[data_s+k,k+2] <- Data[24+k,3]
}
assign(name,df)
rm(name,df)
}
行います
のthatsをどのように私の最終的なファイル(「DF」)は次のようになります。あなたの助けを
おかげでたくさん!
おそらく、すべてのファイルをdata.frames、mydfList、 - lapply(...、read.csv)のリストに読み込み、 'lapply'を使って2回目のパスで何らかのクリーニングを行うか、最初。最後に、 'do.call(rbind、mydfList)'などを使用してリストを単一のdata.frameに結合します。たとえば、ファイルをdata.framesのリストに読み込む場合は、[this post](https://stackoverflow.com/questions/5758084/loop-in-r-loading-files)を参照してください。 – lmo
たぶん私は何か不足しているかもしれませんが、 'i'をシフトすると、2番目のループの' df'のデータを上書きしているようです。 – juan
ありがとうございました!私はいつもgappchtの答えと組み合わせてlapply()を実際に助けたことを忘れる! – nvw