【发布时间】:2013-06-14 14:41:42
【问题描述】:
我正在尝试计算落在 1000 个窗口内的条目,问题是我正在使用 for 循环,这使得需要执行的操作数量非常大(我对 R 相当陌生)而且我得到一个越界错误。我知道必须有更好的方法来做到这一点。
文件(警告文件超过 100mb):bamDF.txt
用途:
dget(file="bamDF.txt")
脚本:
attach(bamDF)
out <- matrix(0,1,ceiling((max(pos, na.rm=TRUE)-min(pos, na.rm=TRUE))/interval))
interval <- 1000
for(q in 1:nrow(bamDF)){
for(z in 1:ceiling((max(pos, na.rm=TRUE)-min(pos, na.rm=TRUE))/interval)){
if(min(pos, na.rm=TRUE)+interval*(z-1)<pos[q]&&pos[q]<(min(pos, na.rm=TRUE)+interval*(z))){
out[z,] <- out[z,]+1;
}
}
}
detach(bamDF)
【问题讨论】:
-
“落在 1000 个窗口内”到底是什么意思?
-
假设你有一个从 1 到 5000 的数轴,所以对于 1000 个窗口/bin,你将在该间隔内有 5 个 bin,然后你会查看落入每个 bin 的所有数字并计数他们。希望能澄清一点。
-
table(cut(yourdatatocount, seq(0, 5000, 1000)))做的事情是否与您正在寻找的内容相近?
标签: r if-statement for-loop