【发布时间】:2014-07-09 16:42:50
【问题描述】:
我有一个 R 脚本,我想用它来解析一个文件并从中获取一些信息,但该文件是 44 GB。
谁能帮我用一种读取文件速度更快的编程语言写这个?
脚本很简单:
ld <- read.table("plink-inter-chr---ld-window-r2-0.ld", header = T)
ldv1 <- do.call(rbind, strsplit(as.character(ld[,1]), "_"))
ldv4 <- do.call(rbind, strsplit(as.character(ld[,4]), "_"))
ld <- matrix(c(ldv1[,2], ldv4[,2], ld[,2], ld[,5], ld[,7]), ncol=5)
N <- 30
within <- numeric(N)
between <- numeric(N)
for(i in 1:N){
within[i] <- mean(as.numeric(ld[which(ld[,1] == i & ld[,2] == i),5]))
between[i] <- mean(as.numeric(ld[which(ld[,1] == i & ld[,2] != i),5]))
}
table <- matrix(c(within, between), ncol=2)
write.table(table, file = "within-between.tab", quote = FALSE, row.names = FALSE, col.names = FALSE)
文件看起来像这样:
CHR_A BP_A SNP_A CHR_B BP_B SNP_B R2 DP
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2210 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2419 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2524 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2587 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2799 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 2947 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 3142 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 3178 . 1 1
NODE_1_length_193190_coverage_19.3759_GC_24.97 919 . NODE_1_length_193190_coverage_19.3759_GC_24.97 3261 . 1 1
感谢您的帮助, 阿德里安
【问题讨论】:
-
对于那些不熟悉R的人,你能举个例子说明输出应该是什么样子吗?
-
@AdrianP:你的“谁能帮我用一种读取文件速度更快的编程语言写这个”是什么意思?你懂什么语言,你需要什么帮助?我想这与你的工作有关,你利用别人的努力并获得报酬是非常错误的
-
mysite.science.uottawa.ca/ncorradi/members.html 我正在攻读科学硕士学位。攻读硕士学位确实获得了助学金,但这不是传统意义上的就业。我懂一点perl和python。