在做循环数组的时候不知道这个循环怎么写了,因为数据太大了,希望能求救。
k=seq(10100,249250621,10)
文件 'a' 为:
chr1 100000851 + 2 100000925
chr1 100001273 + 3 100001347
类似这样的有30万行的数据
现在我想做的是找出每一个a[,5]所在的这样的区间(k-75,k+75)
合并成一个新的数据框使得a[,6]=k
我自己写了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))
在这个小函数中,如果k只有几个值我可以算出结果来,但是对于这么大的k,总是显示错误。
2.for(i in 1:length(k)){
     if(length(N1<-which(a[,5]-(k[i]-75)>0&a[,5]-(k[i]+75)<0))>0){
        for(j in N1){
           x1=cbind(k[i],a[j,])
           x2=rbind(x2,x1)
        }
     }
  }
 
谁能有比较简洁的办法告诉我为什么求不出来,错在哪里?有没有更简单的办法? :-( 不胜感激
没太明白你的意思,你不妨把你的数据的一部分给贴出来,然后再写出来你希望输出的结果,这样会更清楚!
input <- read.table(...)
head(input)

此外,你的第一个函数里面,which函数的右括号漏掉了;第二个函数里面的if的判断条件太难读了,你不如多写几行,那样会更清楚些吧。