【发布时间】:2020-03-18 16:37:30
【问题描述】:
对于多个数据集 (ID 1-285),我有一个包含多个模型的 R 平方、AIC 和 BIC 结果的数据框(最初是 6 个,删除了 NA(失败的模型))。它看起来像这样:
R.Squared AIC.Score BIC.Score ID Model
0.995974109 -72.3098650 -65.6488424 1 Gompertz
0.934979868 3.5847545 8.9135726 1 Quadratic
0.987590443 -40.7896873 -34.1286648 1 Polynomial
0.714849861 42.9776837 46.9742972 1 Linear
0.997938552 -129.21663 -122.555616 2 Gompertz
0.606529548 15.8280808 21.1568988 2 Quadratic
0.836863960 -6.8237218 -0.1626993 2 Polynomial
0.278205570 30.8166440 34.8132576 2 Linear
0.996508677 -75.9122185 -69.2511959 3 Gompertz
0.994680122 -64.1194699 -57.4584473 3 Baranyi
0.622752101 53.2011917 58.5300097 3 Quadratic
0.855506577 28.3304727 34.9914952 3 Polynomial
0.260179452 70.0593352 74.0559487 3 Linear
0.939319678 8.7821245 15.7881114 4 Gompertz
0.946040756 5.2604112 12.2663981 4 Baranyi
0.786132773 44.5742023 50.1789919 4 Quadratic
0.943966980 6.3917756 13.3977625 4 Polynomial
0.213360142 81.6466566 85.8502487 4 Linear
这是我一直试图用来提取模型名称以获得每个 ID 的最佳分数的代码:
for (i in 1:X) {
ID_stats <- total_stats_results[which(total_stats_results$ID==i),]
#SAVE BEST MODEL DATA TO DATAFRAME
R.Squared <- max(ID_stats[,"R.Squared"])
best_model_R <- ID_stats[ID_stats$R.Squared == R.Squared, "Model"]
best_model_R <- as.character(best_model_R)
AIC <- min(abs((ID_stats[,"AIC.Score"])))
best_model_AIC <- ID_stats[ID_stats$AIC.Score == AIC, "Model"]
best_model_AIC <- as.character(best_model_AIC)
BIC <- min(abs((ID_stats[,"BIC.Score"])))
best_model_BIC <- ID_stats[ID_stats$BIC.Score == BIC, "Model"]
best_model_BIC <- as.character(best_model_BIC)
final_stats <- data.frame(i, best_model_R, best_model_AIC, best_model_BIC)
names(final_stats) <- c("ID", "Best R-Sq Model", "Best AIC Model", "Best BIC Model")
write.csv(final_stats, paste0("../results/model_fits/final_stats_",i,".csv"))
}
但每次我尝试运行我的循环时,我都会收到此错误:
Error in data.frame(i, best_model_R, best_model_AIC, best_model_BIC) :
arguments imply differing number of rows: 1, 0
任何帮助将不胜感激!干杯x
【问题讨论】: