Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中多变量的glm_R_Loops_Apply_Glm - Fatal编程技术网

R中多变量的glm

R中多变量的glm,r,loops,apply,glm,R,Loops,Apply,Glm,我想为我的snps阵列建模。我可以使用下面的代码一个接一个地执行此操作 Data$DX=as.factor(Data$DX) univariate=glm(relevel(DX, "CON") ~ relevel(rs6693065_D,"AA"), family = binomial, data = Data) summary(univariate) exp(cbind(OR = coef(univariate), confint(univariate))) 如何使用循环或应用程序对所有其他

我想为我的snps阵列建模。我可以使用下面的代码一个接一个地执行此操作

Data$DX=as.factor(Data$DX)
univariate=glm(relevel(DX, "CON") ~ relevel(rs6693065_D,"AA"), family = binomial, data = Data)
summary(univariate)
exp(cbind(OR = coef(univariate), confint(univariate)))
如何使用循环或应用程序对所有其他SNP执行此操作?snps分别为rs6693065_D、rs6693065_A和数百个。从上述代码中,只有rs6693065_D将被所有其他SNP替换。 顺致敬意,
Zillur

考虑开发一种处理任何SNP的通用方法。然后使用Lappy或sapply迭代传递每个SNP列:

要构建数据帧,请调整方法和lappy调用,后跟do.call+rbind:


SNP列是否在数据中?特别是除了DX以外的所有列?更好的数据,谢谢。对SNP是数据中的列。DX也是一个包含两个级别“CAS”和“CON”的列。除了SNP和DX,数据中还有其他列吗?谢谢。对还有许多其他专栏。总共有489个栏目,其中3:426是SNP,谢谢。在输出调用中,我得到了这个错误。relevel.factorsnps中出错,AA:“ref”必须是现有级别。我有其他的SNP水平,包括“AA”,你的400+中可能有一个没有AA水平。请参阅tryCatch edit,您可以在lappy中捕获错误,但在sapply中返回NA。非常感谢。它起作用了。下游的另一个问题。我得到的结果是:非常感谢。它起作用了。下游的另一个问题。我得到的输出是:$rs3024847_R或2.5%97.5%截距1.2285714 0.8970813 1.688313 relevelsnps,aa其他0.7657037 0.5404940 1.081639。是否可以将输出转换为具有上述列或、2.5%和97.5%以及行名作为SNP名称的数据帧。请参阅扩展以构建rbind外部循环的数据帧列表。
# GENERALIZED METHOD
proc_glm <- function(snps) {
   univariate <- glm(relevel(data$DX, "CON") ~ relevel(snps, "AA"), family = binomial)

   return(exp(cbind(OR = coef(univariate), confint(univariate))))
}

# BUILD LIST OF FUNCTION OUTPUT 
glm_list <- lapply(Data[3:426], proc_glm)
# BUILD LIST OF FUNCTION OUTPUT 
glm_list <- lapply(Data[3:426], function(col) 
                   tryCatch(proc_glm(col), error = function(e) e))
proc_glm <- function(col){
  # BUILD FORMULA BY STRING
  univariate <- glm(as.formula(paste("y ~", col)), family = binomial, data = Data)

  # RETURN DATA FRAME OF COLUMN AND ESTIMATES
  cbind.data.frame(COL = col,
                   exp(cbind(OR = coef(univariate), confint(univariate)))
  )
}

# BUILD LIST OF DFs, PASSING COLUMN NAMES
glm_list <- lapply(names(Data)[3:426], 
                   tryCatch(proc_glm(col), error = function(e) NA))

# APPEND ALL DFs FOR SINGLE MASTER DF
final_df <- do.call(rbind, glm_list)