模拟多个图的循环中的R错误

模拟多个图的循环中的R错误,r,loops,for-loop,classification,roc,R,Loops,For Loop,Classification,Roc,我试图通过使用R库ROCR构建一个循环来绘制10个ROC并存储10个模型的AUC分数。我创建的循环生成一个错误: 预测错误(如.numeric(var_name[i]),s_test$点击): 每次运行中的预测数必须等于 每次跑步 当我尝试单独运行预测时,标签的数量不等于预测并没有什么问题。有人能帮我修复由for循环引起的错误吗 个人预测(效果很好): lr.pred您正在prediction()调用中传递一个字符串,而不是命名对象 在工作的单个非循环运行中,您调用:prediction(as

我试图通过使用R库
ROCR
构建一个循环来绘制10个ROC并存储10个模型的AUC分数。我创建的循环生成一个错误:

预测错误(如.numeric(var_name[i]),s_test$点击): 每次运行中的预测数必须等于 每次跑步

当我尝试单独运行预测时,标签的数量不等于预测并没有什么问题。有人能帮我修复由for循环引起的错误吗

个人预测(效果很好):


lr.pred您正在
prediction()
调用中传递一个字符串,而不是命名对象

  • 在工作的单个非循环运行中,您调用:
    prediction(as.numeric(lda\u predp)…)

  • 在循环中,它类似于传递带引号的字符串:
    预测(作为数字(“lda\u predp”)…)

要解决此问题,请将var_name指定给命名对象(即,无字符串),然后按原样运行
for
循环:

var_name = c(nb_pred1, lda_pred1, qda_pred1, lg_prob, lda_pred_1_p, lda_pred_2_p,
             lda_pred_int_p, lda_pred_t_p, lda_pred_v_p, lda_pred_c_p)
或者使用
get()
内部循环按字符串引用环境对象:

var_name = c("nb_pred1", "lda_pred1", "qda_pred1", "lg_prob", "lda_pred_1_p", "lda_pred_2_p",
             "lda_pred_int_p", "lda_pred_t_p", "lda_pred_v_p", "lda_pred_c_p")

lr.pred <- vector(); AUC <- vector(); lr.ROC <- vector()

for (i in 1:length(var_name)){
     lr.pred[i] <- prediction(as.numeric(get(varname[i]), s_test$clickthrough)
     ...
}
var\u name=c(“nb\u pred1”、“lda\u pred1”、“qda\u pred1”、“lg\u prob”、“lda\u pred\u 1\u p”、“lda\u pred\u 2\u p”,
“lda_pred_int_p”、“lda_pred_t_p”、“lda_pred_v_p”、“lda_pred_c_p”)

lr.pred请显示成功的单个(非循环)代码。另外,
@
似乎不合适-这里可能有打字错误?@Parfait我认为lr.pred的类不是矢量,而是从ROCR包生成的信息。您认为有没有一种方法可以从ROCR中提取图形所需的信息?请再次显示正在工作的单个(非循环)代码。我不知道该软件包,因此我将尝试帮助您使用循环语法。@Parfait Hi我编辑了postAfter在使用get()之后,另一条错误消息显示“error:object'lr.pred'not found”。可能与prediction()格式有关..ida_predp=lda_pred1。我更改了名称,但忘记编辑我的帖子以反映更改。我已经更新了帖子。对不起,混淆了。那么它是否适用于正确的名称?再次检查环境中是否存在这些对象。否,在名称更改和get()之后,循环仍会生成相同的错误。我认为是ROCR的预测造成了这个问题。它不会生成向量…您没有按照我的回答使用
get()
var\u name[i]
是字符串,而不是实际的环境对象。
 lr.pred = list()

 var_name = 
 c("nb_predp","lda_predp","qda_predp","lg_prob","lda_forwardp","lda_lassop", 
  "lda_pred_int_p","lda_pred_t_p","lda_pred_v_p","lda_pred_c_p")

 for (i in 1:length(var_name)){
 lr.pred[[i]] <- prediction(var_name[i], s_test$clickthrough)

 AUC[i] <- performance(lr.pred[i],"auc")@y.values[[1]]
 lr.ROC[i] <- performance(lr.pred[i],"tpr","fpr") 
 plot(lr.ROC[i], main= var_name[i])

}
var_name = c(nb_pred1, lda_pred1, qda_pred1, lg_prob, lda_pred_1_p, lda_pred_2_p,
             lda_pred_int_p, lda_pred_t_p, lda_pred_v_p, lda_pred_c_p)
var_name = c("nb_pred1", "lda_pred1", "qda_pred1", "lg_prob", "lda_pred_1_p", "lda_pred_2_p",
             "lda_pred_int_p", "lda_pred_t_p", "lda_pred_v_p", "lda_pred_c_p")

lr.pred <- vector(); AUC <- vector(); lr.ROC <- vector()

for (i in 1:length(var_name)){
     lr.pred[i] <- prediction(as.numeric(get(varname[i]), s_test$clickthrough)
     ...
}