r - 为什么 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 无法识别它。让我的函数工作的唯一方法是,如果我使用命名为参数本身的确切参数运行我的函数。谁能帮我这个?这让我坚持了一段时间。