可能重复:
在 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