巨大的数据文件,运行多个参数和内存问题,Fisher';s检验

巨大的数据文件,运行多个参数和内存问题,Fisher';s检验,r,performance,export-to-csv,write.table,R,Performance,Export To Csv,Write.table,我有一个R代码,我正试图在服务器中运行该代码。但是它在中间停止/可能因为内存限制而冻结。数据文件非常庞大(一个有2000万行),如果你看一下代码中的双for循环,length(ratSplit)=281和length(humanSplit)=36。这些数据有人类和大鼠基因的特定数据,人类有36个重复,而大鼠有281个。所以,循环基本上是281*36步。我想做的是使用函数getGeneType处理数据,看看不同复制组合的表达式有多不同/独立。使用Fisher检验。已处理的数据rat__7_25_F

我有一个R代码,我正试图在服务器中运行该代码。但是它在中间停止/可能因为内存限制而冻结。数据文件非常庞大(一个有2000万行),如果你看一下代码中的双for循环,
length(ratSplit)=281
length(humanSplit)=36
。这些数据有人类和大鼠基因的特定数据,人类有36个重复,而大鼠有281个。所以,循环基本上是281*36步。我想做的是使用函数
getGeneType
处理数据,看看不同复制组合的表达式有多不同/独立。使用Fisher检验。已处理的数据rat__7_25_FDR_05.out如下所示:

2       Sptbn1  114201107       114200202       chr14|Sptbn1:114201107|Sptbn1:114200202|reg|-   2       Thymus_M_GSM1328751     reg
2       Ndufb7  35680273        35683909        chr19|Ndufb7:35680273|Ndufb7:35683909|reg|+     2       Thymus_M_GSM1328751     rev
2       Ndufb10 13906408        13906289        chr10|Ndufb10:13906408|Ndufb10:13906289|reg|-   2       Thymus_M_GSM1328751     reg
3       Cdc14b  1719665 1719190 chr17|Cdc14b:1719665|Cdc14b:1719190|reg|-       3       Thymus_M_GSM1328751     reg
数据
feature\u output\u 7\u 2.out
具有以下形式

SPTLC2  78018438        77987924        chr14|SPTLC2:78018438|SPTLC2:77987924|reg|-     11      Fetal_Brain_408_AGTCAA_L006_R1_report.txt       reg
EXOSC1  99202993        99201016        chr10|EXOSC1:99202993|EXOSC1:99201016|rev|-     5       Fetal_Brain_408_AGTCAA_L006_R1_report.txt       reg
SHMT2   57627893        57628016        chr12|SHMT2:57627893|SHMT2:57628016|reg|+       8       Fetal_Brain_408_AGTCAA_L006_R1_report.txt       reg
ZNF510  99538281        99537128        chr9|ZNF510:99538281|ZNF510:99537128|reg|-      8       Fetal_Brain_408_AGTCAA_L006_R1_report.txt       reg
PPFIBP1 27820253        27824363        chr12|PPFIBP1:27820253|PPFIBP1:27824363|reg|+   10      Fetal_Brain_408_AGTCAA_L006_R1_report.txt       reg
现在我有几个问题要问,如何使这更有效。我认为当我运行这段代码时,R会占用大量内存,最终导致问题。我想知道是否有更有效的方法

另一种可能性是使用double for loop’。sapply会帮忙吗?在这种情况下,我应该如何申请sapply

最后,我想将
结果
转换为csv文件。我知道这样写代码有点让人不知所措。但是,任何优化/高效编码/编程都将非常困难!我真的需要至少运行一次整个程序,以便尽快获得数据


#此项比较reg与rev
日期(

ratRawData参考已接受的答案,
R
使用的内存量可以通过
gc()
进行跟踪

如果脚本确实内存不足(这不会让我感到惊讶),解决问题的最简单方法是将
write.table()
从循环的外部移动到内部,以替换
rbind()
。只需为CSV文件创建一个新的文件名,该文件由每个输出写入,例如:

csvFileName <- sprintf("compareRegAndRev%03d_%03d.csv",i,j)

csvFileName我强烈建议,如果您正在处理庞大的数据集并遇到内存问题,请使用R中的data.table包。
csvFileName <- sprintf("compareRegAndRev%03d_%03d.csv",i,j)