[英]rbind error after for loop in R
我有兩個文件。 文件1具有56632行和4列,如下所示:
Id Chr TSS TES
ENSG00000210049 1 63987904 63989904
ENSG00000211459 1 63984904 63985904
ENSG00000210077 1 58941831 58991831
文件2具有28895行和3列,看起來像:
CHR snps POS
1 rs17125090 63988904
1 rs7546938 64677853
1 rs3087585 58971831
我正在嘗試運行一個嵌套的for循環,以便為文件2中的每一行查找文件1中的行,該行中的字段3中的值最接近文件2中字段3中的值(給定字段2)來自文件1的文件和來自文件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)
我Error in pi[[j]] : subscript out of bounds
遇到錯誤Error in pi[[j]] : subscript out of bounds
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
我想這就是您要尋找的東西(比我預期的要長一些)-
# First file as a data frame
df1 <- data.frame("Id"=c("ENSG00000210049","ENSG00000211459","ENSG00000210077"),
"Chr"=c(1,1,1), "TSS"=c(63987904,63984904,58941831))
# Second file as a data frame
df2 <- data.frame("CHR"=c(1,1,1), "snps"=c("rs17125090","rs7546938","rs3087585"),
"TES"=c(63988904,64677853,58971831))
# Join matching rows in second file
df2[c(names(df1),"diff")] <- data.frame(t(sapply(seq_along(df2$TES), function(x)
{
cbind(df1[which.min(abs(df2[x,"TES"] - df1[df1$Chr %in% df2[x,"CHR"], "TSS"])),],
min(abs(df2[x,"TES"] - df1[df1$Chr %in% df2[x,"CHR"], "TSS"])))
})))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.