두 개의 파일이 있습니다. 파일 1은 56,632 행과 4 열이 있고, 다음과 같습니다for 루프에서 rbind 오류가 발생했습니다.
Id Chr TSS TES
ENSG00000210049 1 63987904 63989904
ENSG00000211459 1 63984904 63985904
ENSG00000210077 1 58941831 58991831
그리고 2 28,895 행과 3 열이 파일과 같다 : 내가 루프 중첩을 실행하려고
CHR snps POS
1 rs17125090 63988904
1 rs7546938 64677853
1 rs3087585 58971831
파일 2의 모든 행에 대해 파일 1의 필드 2가 파일 2의 필드 3의 값에 가장 가까운 필드 3의 값을 가진 파일 1의 행을 찾 으려면 파일 1의 필드 2와 파일 2의 필드 1을 사용합니다 일치합니다. 내 코드는 다음과 같습니다
genes<-read.table("file1",header=T)
snps<-read.table("file2",header=T)
df<-data.frame()
for(i in 1:10){
i.genes<-data.frame()
i.dist<-data.frame()
for(j in 1:56632){
if((snps[i,1]==genes[j,2]) & (abs(snps[i,3]-genes[j,3])<2000000)){
i.genes<-rbind(i.genes,genes[j,1:3])
i.dist<-rbind(i.dist,abs(genes[j,3]-snps[i,3]))
i.df<-cbind(i.genes,i.dist)
}
}
i.df<-i.df[order(i.df[,4]),]
i.df<-i.df[1,]
i.df2<-cbind(snps[i,1:3],i.df)
colnames(i.df2)<-NULL
df<-rbind.data.frame(df,i.df2)
}
write.table(df,"test.df",quote=F,row.names=F)
내가 선 df<-rbind.data.frame(df,i.df2)
에 대한 오류 Error in pi[[j]] : subscript out of bounds
받고 있어요. 누군가 잘못 될 수 있음을 지적 할 수 있습니까?
원하는 출력 :이 당신을 위해 무엇을 찾고있는 것 같다
1 rs17125090 63988904 ENSG00000210049 1 63987904 1000
1 rs7546938 64677853 ENSG00000210049 1 63987904 689949
1 rs3087585 58971831 ENSG00000210077 1 58941831 30000
1은 4 열로 표시되어 있습니다. –
코드를 다음과 같이 재현 가능한 예제로 줄이면 도움이됩니다. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Bulat
당신의 조건을 만족시키는 파일 2의 행 들이죠? 원하는 출력은 무엇입니까? –