k=seq(10100,249250621,10)
a =data.frame(nrow=300000,ncol=5) #like this format:
chr1 100000851 + 2 100000925
chr1 100001273 + 3 100001347
..............................
1.Now我想計算:[R計算大數據流通
爲每a[i,5]
,搜索k[j]
可能在區間使a[i,5]
(k[j]-75,k[j]+75)
然後合併一個new data.frame(),make a[i,6]=k[j]
2.我寫了兩個代碼,但我不知道我在哪裏錯了:
1)
b=function(x){
x1=a[which(a[,5]-(x-75)>0&a[,5]-(x+75)<0,]
x2=cbind(x1,x)
}
c=apply(k,1,function(x)a(x))
2)
for(i in 1:length(k)){
if(length(N1<-which(a[,5]-(k-75)>0&a[,5]-(k+75)<0))>0){
for(j in N1){
x1=cbind(k,a[j,])
x2=rbind(x2,x1)
}
}
}
但他們都錯了。
任何人給予建議可能是非常感激!
如果兩個沒有「K」的比賽條件會發生什麼或?你能舉一個例子「a [,5]」和「k」來考慮任何約束嗎?作爲開始,似乎你可以嘗試像sapply(a [,5],function(x)k [x> =(k-75)&x <=(k + 75)])? – 2014-12-04 15:55:43
謝謝。 @ alexis_laz#例如,應該有'k'可以匹配條件,如果有多於兩個k匹配,則將每個k組合爲構造新的data.frame()。 'kr1 100000851 + 2 100000925 100000925(k)''chr1 100000851 + 2 100000925 100000935(k)''chr1 100000851 + 2 100000925 100000945(k)''chr1 100000851 + 2 100000925 100000955(k)' – 2014-12-05 00:53:04
您能否給我一些建議嗎?這些讓我很困惑。 – 2014-12-05 05:08:30