我有一个带有染色体基因的文件及其表达
Gene_id rpkm chr start stop
AT1G01010 4.18954 Chr1 3631 5899
AT1G01020 10.22902 Chr1 5928 8737
AT1G01030 1.99064 Chr1 11649 13714
.
.
AT1G80980 5.67423 Chr1 30422058 30424087
AT1G80990 79.5678 Chr1 30424421 30425192
我想使用start列将文件分成20,000个窗口。 因此,首先得到落入窗口的基因中位数从0到20,000,然后从20,000到40,000等等。
我想最终看起来像这样的文件
chr start stop median
Chr1 0 20000 x
Chr1 20000 40000 y
我试过写一个函数
exp <- read.table(file='cegs_chr1ath_pos.txt', header=T, stringsAsFactors=F)
slide_function <- function(data, window, step){
#get how many genes looking at along chromosome
total <- length(data)
#use seq() to get a sequence of expression values from 0 to total
points <- seq(from=0, to=30424421, by = step)
result <- vector(length = length(points))
for(i in 1:length(points)){
result[i] <- median(data[points[i]:(points[i] + window - 1)],)
}
return(result)
}
slide_function(exp$start,20000,200)
但是我不知道如何让函数计算该窗口的rpkm值的中位数,或者如何让它生成我希望的结果文件