我正在寻找一种快速的方法来从一个更大的表中提取大量的行。我的表的顶部如下所示:
> head(dbsnp)
snp gene distance
rs5 rs5 KRIT1 1
rs6 rs6 CYP51A1 1
rs7 rs7 LOC401387 1
rs8 rs8 CDK6 1
rs9 rs9 CDK6 1
rs10 rs10 CDK6 1
还有尺寸:
> dim(dbsnp)
[1] 11934948 3
我想选择那些行名包含在列表中的行:
> head(features)
[1] "rs1367830" "rs5915027" "rs2060113" "rs1594503" "rs1116848" "rs1835693"
> length(features)
[1] 915635
毫不奇怪,直接使用temptable = dbsnp[features,]
的方法需要相当长的时间。
我一直在研究如何通过R中的sqldf包来完成。我认为这可能会更快。不幸的是,我无法弄清楚如何在SQL中选择特定行名称的行。
谢谢。
data.table
包,您可以使用键来完成此操作。您的“行名称”是否与snp
列相同? - Justinfoo<-rownames(dbsnp); bar<-which(foo%in%features,arr.ind=TRUE); temptable<-dbsnp[c(bar),]
这样的机制获取行号是否会有任何时间差异吗?(我知道这不是正确的R语法,但你明白我的意思)。 - Carl Witthoft