我试图通过其染色体和位置信息对遗传数据区域进行子集化。不幸的是,我的结果不在我的参数范围内。任何帮助将不胜感激。
这是我的代码:
subset.by.region<- function(df,region.info, expansion=0){
MBstart = as.numeric(region.info[[3]]) - expansion
MBend = as.numeric(region.info[[4]]) + expansion
chrom =as.numeric(region.info[[2]])
print(chrom)
print(MBstart)
print(MBend)
BPstart <- MBstart * 1e6
BPend <- MBend * 1e6
sub_results <- as.numeric(df$CHR) == chrom & as.numeric(df$BP) >= BPstart & as.numeric(df$BP) <= BPend;
print(head(sub_results))
region_results <- subset(results, sub_results)
return(region_results)
}
以下是控制台的打印件,其中包含正在使用的区域信息:
[1] 1
[1] 113.308
[1] 115.158
以下是子集(region_results)的打印:
GENE CHR SNP EMP1 NP BP SNP_IM SNP_LZ
3238 AP3S1 5 rs26538 1.00000 6 115178395 rs26538 rs26538
3239 AP4B1 1 rs1217401 1.00000 46 114438951 imm_1_114240474 rs1217401
3240 AP4B1 1 rs1217402 1.00000 41 114440258 imm_1_114241781 rs1217402
3241 AP4B1 1 rs3789613 1.00000 297 114443035 imm_1_114244558 rs3789613
3242 AP4B1 1 rs7523862 1.00000 297 114443419 imm_1_114244942 rs7523862
3243 AP4B1 1 rs17464525 1.00000 148 114443899 imm_1_114245422 rs17464525
如您所见,子集中有一行包含染色体5中的标记。我做错了什么?先感谢您。 编辑: 以下是对函数的调用:
write.genelist <- function(table_loc, region.info, out_folder,yank_loc){
region.ID = as.character(region.info[[1]])
out_name = paste0(region.ID,"_genes.list")
region_folder = file.path(out_folder, region.ID)
out_loc <- file.path(region_folder,out_name, fsep = .Platform$file.sep)
results <- read.table(table_loc, T,strip.white = TRUE)
gene_region_results <- subset.by.region(results,region.info)
...
}
答案 0 :(得分:1)
我会在[
函数中使用subset()
进行子集化。有关原因,请参阅?subset
。
subset.by.region<- function(results, df, region.info, expansion=0){
MBstart = as.numeric(region.info[[3]]) - expansion
MBend = as.numeric(region.info[[4]]) + expansion
chrom =as.numeric(region.info[[2]])
print(chrom)
print(MBstart)
print(MBend)
BPstart <- MBstart * 1e6
BPend <- MBend * 1e6
sub_results <- as.numeric(df$CHR) == chrom &
as.numeric(df$BP) >= BPstart & as.numeric(df$BP) <= BPend
print(head(sub_results))
results[sub_results, ]
}
我也会传递results
而不是依赖它在全球环境中被发现。