将对象名称转换为R中列表中的字符串

将对象名称转换为R中列表中的字符串,r,machine-learning,R,Machine Learning,我似乎找不到一个有效的答案,但本质上我正在循环我创建的模型,我的目标是输出准确度以及模型名称,如下所示: accuracy_data <- function(model_prediction,model_name){ confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT) accuracy_results <- round(confmat$overall[["Acc

我似乎找不到一个有效的答案,但本质上我正在循环我创建的模型,我的目标是输出准确度以及模型名称,如下所示:

  accuracy_data <- function(model_prediction,model_name){
     confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
     accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
     print(paste(model_name," - ",accuracy_results,"%",sep=""))
     }
  pred_list <- list(log_pred,knn_pred,svm_pred,non_svm_pred,tree_pred,rf_pred,gbm_pred,xgb_pred,nn_pred)
  for(predic in pred_list){
     accuracy_data(predic,"Model Name")
     }
在每种情况下,我都找不到用模型名称替换“模型名称”的方法。有没有一个简单的方法可以做到这一点?使用pred_列表名称或其他方式

如有任何建议,将不胜感激。在询问之前,我确实在谷歌和这里搜索过,但没有成功


还有一个额外的问题——是否有办法将这些结果输出到某种表或数组中,而不是按原样输出?(如果这是一个单独的问题,很抱歉)

我们可以使用
list(log\uu pred=log\u pred,…)创建名为
列表,或者使用
dplyr::lst
purrr::lst

pred_list <- dplyr::lst(log_pred, knn_pred, svm_pred, non_svm_pred, tree_pred,
           rf_pred, gbm_pred, xgb_pred, nn_pred)

关于输出,它只是
print
ing,即没有返回值。如果我们需要创建一个对象,那么在函数中我们可以更改
打印
以返回输出

accuracy_data <- function(model_prediction,model_name){
 confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
 accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
 return(paste(model_name," - ",accuracy_results,"%",sep=""))
 }

这完美地回答了我的问题。我还有一个问题(尽管我可以把它变成一个新问题)。如果我想实际使用模型的名称,例如“Logistic回归”,而不是模型对象名称中的“log_pred”,有没有简单的选项?像某种字典吗?@Jonas_Konig你能不能把它作为一个新问题发布。谢谢
for(nm in names(pred_list)){
    accuracy_data(pred_list[[nm]], nm)
 }
accuracy_data <- function(model_prediction,model_name){
 confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
 accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
 return(paste(model_name," - ",accuracy_results,"%",sep=""))
 }
out <- c()
for(nm in names(pred_list)) {
    out <- c(out, accuracy_data(pred_list[[nm]], nm))
}