【发布时间】:2011-05-02 10:47:09
【问题描述】:
我在 R 中有 2 个数据帧,例如 df 和 dfrefseq。
df<-data.frame( chr = c("chr1","chr1","chr1","chr4")
, start = c(843294,4329248,4329423,4932234)
, stop = c(845294,4329248,4529423,4935234)
, genenames= c("HTA","OdX","FEA","MGA")
)
dfrefseq<-data.frame( chr = c("chr1","chr1","chr1","chr2")
, start = c(843294,4329248,4329423,4932234)
, stop = c(845294,4329248,4529423,4935234)
, genenames= c("tra","FGE","FFs","FAA")
)
我想检查 dfrefseq 中 df 女巫基因中的每个基因是否最接近所选的 df 基因。 我首先在两个数据框中选择了“chr1”。 然后我为 readschr1 中的第一个基因计算了 start-start start-stop stop-start 和 stop-stop 位点之间的距离。 这个计算的总和说明了距离的一切。我的问题是,如何加快分析速度?因为现在我只针对一个数据框测试了 1 个基因,但我需要测试 2000 个基因。
readschr1 <- subset(df,df[,1]=="chr1")
refseqchr1 <- subset(dfrefseq,dfrefseq[,1]=="chr1")
names<-list()
read_start_start<-list()
read_start_stop<-list()
read_stop_start<-list()
read_stop_stop<-list()
for (i in 1:nrow(refseqchr1)) {
startstart<-abs(readschr1[1,2] - refseqchr1[i,2])
startstop<-abs(readschr1[1,2] - refseqchr1[i,3])
stopstart<-abs(readschr1[1,3] - refseqchr1[i,2])
stopstop<-abs(readschr1[1,3] - refseqchr1[i,3])
read_start_start[[i]]<- matrix(startstart)
read_start_stop[[i]]<- matrix(startstop)
read_stop_start[[i]]<- matrix(stopstart)
read_stop_stop[[i]]<- matrix(stopstop)
names[[i]]<-matrix(refseqchr1[i,4])
}
table<-cbind(names, read_start_start, read_start_stop, read_stop_start, read_stop_stop)
sumtotalcolumns<-as.numeric(table[,2]) + as.numeric(table[,3])+ as.numeric(table[,4]) + as.numeric(table[,5])
test<-cbind(table, sumtotalcolumns)
test1<-test[order(as.vector(test$sumtotalcolumns)), ]
谢谢!
【问题讨论】:
-
请注意
df是 R 中的一个函数。如果将来可能的话,我会尽量避免使用它。dat是使用恕我直言的好名字。与table和names相同。
标签: performance r dataframe