【发布时间】:2016-09-30 04:52:01
【问题描述】:
我试图获得在两个给定点之间共享某些 DNA 序列的个体的比例。我想使用一个特定的滑动窗口。为了说明问题,我创建了这个例子。首先,我创建一个包含四列的数据框。
x<-c(rep("sc256",times=2000),rep("sc784",times=2000))
pos1<-round(runif(2000,100,5000),digits=0)
pos2<-round(runif(2000,100,5000),digits=0)
y3<-rep(c(2,1),times=2000)
M1<-data.frame(x,pos1,pos2,y3)
colnames(M1)=c("iid","pos1","pos2","chr")
我还创建了一个函数来获取在特定区间内具有序列的个体的比例。
roh_island<-function(pop,chr,p1,p2){
a<-pop[pop$chr==chr,]
island<-subset(a,pos1>=p1 & pos2<=p2)
n<-nrow(island)/length(M1$iid)
return(n)
}
roh_island(M1,1,345,700)
现在我想把这个间隔转换成一个大小为 10 的滑动窗口,它在值 0 和 7000 之间移动。所以这个窗口将占据位置 [0,10);(10,20),...,(6990,7000] .我还需要带有滑动窗口的新功能将所有窗口和每个人的比例存储在一个数据框中,然后绘制它。我尝试了一些我发现的关于我看到的滑动窗口的解决方案,但我无法制作它们工作。谢谢
【问题讨论】: