首页 > 解决方案 > 如何将 for 循环中生成的数据组合成一个散点图?

问题描述

我有这段代码可以计算文件(对象gts)中某些命名标记的 p 值。traitfor 循环为中定义的每个生成散点图pts

循环散点图

pts <- read.csv('data_rqtl_phenotypes.csv',as.is=T)
gts <- read.csv('data_rqtl_genotypes.csv',as.is=T)
gts <- gts[,c(1,grep('2B',gts[1,]))]### use only 1B
gts <- gts[,!apply(gts[2,],1,duplicated)]### remove duplicated
dim(gts)### 93 229
map <- gts[1:2,]### salvage map
gts <- gts[-c(1:2),]
gts[gts=='-'] <- NA
testdfr <- merge(pts,gts,by='id')
testdfr[1:5,1:10]

pdf('SingleMarkerAnalysis_ParW471_2021_10_21.pdf')
for( trait in colnames(pts)[-1])
{
 print(trait)
pValueL <- c()
for(marker in colnames(gts))
{
    model <- try(lm(testdfr[,trait]~testdfr[,marker]))
    {
        if(any("try-error"%in%class(model)))
            print('not enough data for a test')
        else
        {
            modelsum <- summary(model)
            coeffs <- modelsum$coefficient
            print(coeffs)
            pValue=coeffs[grep('[AB]$',row.names(coeffs)),grep('Pr',colnames(coeffs))]
            print(pValue)
            if(length(pValue)>0)
                pValueL[marker] <- pValue
        }
    }
}

plot.default(map[2,names(pValueL)],-sapply(pValueL,log10),main=trait,xlab='Chr 1B [cM]', ylab='-log10(pValue)',ylim=c(0,7))
}
 dev.off()
 

但是,我想获取每次迭代产生的数据,然后将其绘制在同一个散点图上,这样我就可以对每个数据进行着色,并查看它们在相互叠加时的比较情况。我不确定如何让循环将每次迭代输出到一个新对象,以便将它们绘制在一起。如果有人知道如何做到这一点,将不胜感激!

标签: rfor-loopscatter-plot

解决方案


推荐阅读