Я ищу быстрый способ извлечь большое количество строк из еще большей таблицы. Верхняя часть моей таблицы выглядит следующим образом:
> 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,]
занимает довольно много времени.
Я искал способы сделать это с помощью пакета sqldf в R. Я подумал, что это может быть быстрее. К сожалению, я не могу понять, как выбирать строки с определенными именами в SQL.
Спасибо.
data.table
. вы можете сделать это с помощью ключей. Идентичны ли имена ваших строк столбцуsnp
? - person Justin   schedule 30.08.2012foo<-rownames(dbsnp); bar<-which(foo%in%features,arr.ind=TRUE); temptable<-dbsnp[c(bar),]
(я знаю, что это неправильный синтаксис R для этого, но вы поняли идею). - person Carl Witthoft   schedule 30.08.2012