【发布时间】:2019-05-20 20:14:50
【问题描述】:
我创建了一个 For 循环来对许多变量应用不同的模型:
my_data <- read.xlsx("phyla.xlsx")
start_variables <- 6
variables <- variable.names(my_data)
variables <- variables[-c(1:(start_variables-1))]
#make a list of data frame for each variable
DF.ls <- list()
for (i in start_variables:length(my_data)){
DF.ls[[i]] <- data.frame(Sample_ID=my_data$Sample_ID,Genotype=my_data$Genotype,
Substrate=my_data$Substrate, y=my_data[[i]])
}
DF.ls <- DF.ls[-1]; DF.ls <- DF.ls[-1]; DF.ls <- DF.ls[-1]; DF.ls <- DF.ls[-1]; DF.ls <- DF.ls[-1]
#model1
model1.ls <- list()
for (i in 1:length(DF.ls)){
model1.ls[[i]] <- gls(y~Substrate+Genotype+Substrate:Genotype, data=DF.ls[[i]])
}
AIC_model1_ls <- list()
for (i in 1:length(model1.ls)){
AIC_model1_ls[[i]] <- AIC(summary(model1.ls[[i]]))
}
AIC_model1 = unlist(AIC_model1_ls)
AIC_model1 = rbind(AIC_model1)
#model2
model2.ls <- list()
for (i in 1:length(DF.ls)){
model2.ls[[i]] <- gls(y~Substrate+Genotype+Substrate:Genotype, weights=varIdent(form=~1|Substrate), data=DF.ls[[i]])
}
AIC_model2_ls <- list()
for (i in 1:length(model2.ls)){
AIC_model2_ls[[i]] <- AIC(summary(model2.ls[[i]]))
}
AIC_model2 = unlist(AIC_model2_ls)
AIC_model2 = rbind(AIC_model2)
这可能不是最好的方法,但它工作得很好,除非有一些零处理。
所以我的问题是我有这个错误,当有零时发生:
gls 中的错误(y ~ Substrate + Genotype + Substrate:Genotype, weights = varIdent(form = ~1 | : 错误收敛 (8)
我希望我的 For 循环在发生此错误时将 NA 放入我的列表中,而不是什么都没有。我该怎么做?
【问题讨论】: