巨大的数据文件,运行多个参数和内存问题,Fisher';s检验
我有一个R代码,我正试图在服务器中运行该代码。但是它在中间停止/可能因为内存限制而冻结。数据文件非常庞大(一个有2000万行),如果你看一下代码中的双for循环,巨大的数据文件,运行多个参数和内存问题,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
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)