我对R脚本很新,我找不到任何类似的话题。我需要将我的' dat'保持与chr匹配的所有行和范围中的范围(起始端)'宾语。 我写了一个for循环,但我认为它不是R中最聪明的解决方案,此外它对于大数据集来说非常慢。 有更快的替代方案吗? 提前感谢您的回复。
regions <- cbind(chr = floor(runif(163,1,10))
, start = floor(runif(163,100,200))
, end = floor(runif(163,200,500)))
dat <- cbind(chr = floor(runif(20e6,1,22))
, pos = floor(runif(20e6, 1,10000)))
matched_index <- c()
for(i in 1:nrow(dat)) {
for(j in 1:nrow(regions)) {
if(dat[i,1] == regions[j,1]
& dat[i,2] >= regions[j,2]
& dat[i,2] <= regions[j,3])
{
matched_index <- c(matched_index, i)
print(i)
break
}
}
}
dat.filtered <- dat[matched_index,]