首页 > 解决方案 > 为什么 R 中的 DGLM 无法识别我的对象?

问题描述

我正在尝试根据我感兴趣的特征在 R 中运行双广义线性模型(DGLM)。我制作了一个函数,它从 dglm 中提取感兴趣的组件,参数接受我的表型对象 (Phenos) 的列 (cT)、来自我的基因型对象 (Geno) 的 snp (i) 和 PCA (covar) 来控制与人口结构。

my.pdglm <- function(cT=NULL, i=NULL, Phenos=NULL, Geno=NULL, covar=NULL)

我的 p.dglm 函数的主体如下

   my.pdglm <- function(cT=NULL, i=NULL, Phenos=NULL, Geno=NULL, covar=NULL) {
          y <- Phenos[,cT]
          model <- dglm(y ~ Geno[, i] + covar[, 2] + covar[, 3] + covar[, 4] + covar[, 5] + covar[,6] + covar[,7] + covar[, 8], ~ Geno[, i], family = gaussian(link = "identity"))
          P.mean <- summary(model)$coef[2, 4]  # Extarct p values for mean part
          P.disp <- pchisq(q = anova(model)$Adj.Chisq[2], df = anova(model)$DF[2], lower.tail = FALSE)
          s.model <- summary(model$dispersion.fit)
          beta <- s.model$coef[2, 1]  # Extarct cofficients
          se <- s.model$coef[2, 2]  # Extract standard errors
          out <- data.frame(Beta = beta, SE = se, P.mean = P.mean, P.disp = P.disp, 
          stringsAsFactors = FALSE)  # Save all the extracted 
          return(out)
}

当我尝试运行此功能时,我不断收到以下错误,以此为例:

my.pdglm(cT=3, i=9173, Phenos=SP_Zm_NULL, Geno=t(Geno), covar=Zm_covar_FULL)
[1] "--------- Fitting DGLM model for SNP 9173 out of 41611  ----------"
Error in eval(predvars, data, env) : object 'y' not found
Called from: eval(predvars, data, env)

当我 print(y) 作为质量控制步骤时,它通常会打印,但 dglm 无法识别它。让我的函数工作的唯一方法是,如果我使用命名为参数本身的确切参数运行我的函数。谁能帮我这个?这让我坚持了一段时间。

标签: r

解决方案


推荐阅读