您好我已经完成了一项基本功能(我对R来说很新)。
analyse <- function(gene_set,probe_ids) {
Xprobe_ids <- mapply(function(k) paste('X',k,sep=''), probe_ids)
model_1_formula_str = 'Status ~ Age + Sex + Source';
model_1 <- glm(as.formula(model_1_formula_str), data = fcA, family = "binomial");
model_2_formula_str = model_1_formula_str;
for (next_id in probe_ids) {
model_2_formula_str = paste(model_2_formula_str, ' + X',next_id,sep = '')
}
model_2 <- glm(as.formula(model_2_formula_str), data = fcA, family = "binomial");
gene_pval = anova(model_2,model_1, test="Chisq")[2,5];
probe_id_str <- paste(probe_ids,collapse=',');
probe_num <- length(probe_ids);
c(gene_set,gene_pval,probe_num,probe_id_str,);
}
问题出现了,
for (next_id in probe_ids) {
model_2_formula_str = paste(model_2_formula_str, ' + X',next_id,sep = '')
}
基本上我想分析模型1与模型2,模型2针对每个不同的基因进行更改。然而,我通过循环发送模型2,只是简单地改变model_2_formula_str到达最终基因,然后进行分析。
我想知道的是,如何进行分析存储结果呢?然后转到下一个基因做同样的事情,依此类推?
感谢您的帮助!
答案 0 :(得分:2)
应该使用lapply
strings <- c()
for (next_id in probe_ids) {
strings = c(strings, paste(model_2_formula_str, ' + X',next_id,sep = ''))
}
mods <- lapply(strings, FUN = function(x) {
glm(as.formula(x), data = fcA, family = "binomial") })
然后迭代您的模型列表以进行您想要的比较
gene_pvals = lapply(mods, FUN = function(x) {
anova(x, model_1, test="Chisq")[2,5]
})