我有一个相当基本的问题,但希望在这里找到一些帮助。我使用数据框“norm_regions”中的坐标从数据框“maindata”中提取数据,然后我想从中计算“norm_regions”中每一行的中值:
normalize_data <- function(maindata, norm_regions){
norm_regions[,1]<-factor(norm_regions[,1], levels=levels(straindata[,3]))
norm_regions$median<-call_region_median(straindata, chrom=norm_regions$chrom, start=norm_regions$start, end=norm_regions$end)
return(norm_regions)
}
call_region_median <- function(maindata, chrom, start, end) {
region<-subset(straindata, V3==chrom & V4>=start & V4<=end)
region_median<-median(region$V5, na.rm=TRUE)
return(region_median)
}
奇怪的是,我为所有坐标获得相同的输出,而当我逐个为每个坐标执行时,情况并非如此:
chrom start end median
1 chrXII 373029 373529 144.7
2 chrVII 888228 888728 144.7
3 chrV 93848 94348 144.7
4 chrX 683618 684118 144.7
5 chrVI 199188 199688 144.7
6 chrIX 411686 412186 144.7
7 chrIII 74318 74818 144.7
8 chrXIV 561002 561502 144.7
9 chrXV 277405 277905 144.7
10 chrI 176029 176529 144.7
这是什么问题?
编辑: 这是norm_regions的一个例子:
chrom start end
chrXII 373029 373529
chrVII 888228 888728
chrV 93848 94348
chrX 683618 684118
chrVI 199188 199688
和maindata:
V1 V2 V3 V4 V5
WT brdu chrI 1 33.44
WT brdu chrI 2 34.91
WT brdu chrI 3 35.51
WT brdu chrI 4 39.78