重複の可能性:
R で非常に大きなテーブルをデータフレームとしてすばやく読み取る
大きな (50MB 以上の) テキスト ファイルからデータのさまざまなセクションを繰り返し読み取る必要があります。現在、私のコードは機能していますが、1 回の反復を完了するのに 30 秒かかります。コードの効率を改善するために誰か助けてもらえますか?
私のコード:
Skip_s=c(88334, 92244, 92635, 96154, 96545, 100455, 100846, 104365, 104756,
112967, 123524, 134081, 145929, 156877, 170171, 183856, 194804, 206143,
217482, 230385, 245243, 255800) #starting number of rows
nrows_s=c(380) #the length of code I will read
for (k in 1:length(Skip_s)){
bb = read.table("file",skip=Skip_s[k]-1, nrows=nrows_s, colClasses = c("character",rep("numeric",6)))
#I use read.table is because it can break the loaded information into columns
TOT_s[k,1,Ite] = mean(bb$V4[1:105])
TOT_s[]..... #I have 20 this statements
}
上記のコードの完全版には 30 秒かかります。ほとんどの時間は に費やされread.table
ます。私はそれを最適化する方法があると考えていますか?
read.table 関数で読み取ったデータの例を次に示します。
CNC HORIZON COMPARTMENT TOTAL ADSORBED DISSOLVED GAS CONC.
CNC (MG/KG) (MG/KG) (MG/L) (MG/L)
CNC --------------------------------------------------------------------------
CNC
CNC
CNC 1 1 0.4062 0.3737 1.210 0.2419E-05
CNC 1 2 0.4942 0.4547 1.472 0.2943E-05
CNC 1 3 0.4930 0.4536 1.468 0.2936E-05
CNC 1 4 0.4812 0.4427 1.433 0.2865E-05
CNC 1 5 0.4682 0.4307 1.394 0.2788E-05
CNC 1 6 0.4550 0.4186 1.355 0.2710E-05
CNC 1 7 0.4418 0.4065 1.315 0.2631E-05
CNC 1 8 0.4286 0.3944 1.276 0.2552E-05
CNC 1 9 0.4154 0.3822 1.237 0.2474E-05
CNC 1 10 0.4022 0.3701 1.198 0.2395E-05