我有一套100个模型的混淆矩阵,如wynik1,... wynik100。
我希望拥有所有这些模型的准确度。
我写了一个循环,但它不起作用。
问题出在哪里?
任务是从字符串生成字符串和变量:
confusionMatrix(m2pred,cats$Sex)-> wynik1
...
accuracy <- NULL
b_accuracy <- NULL
for (i in 1:100){
name <- paste0("wynik",i)
ac<- name$overall[1]
bac<- name$byClass[11]
accuracy <- c(accuracy, ac)
b_accuracy <- c(b_accuracy, bac)
}
accuracy
输出结果为:
Error in nazwa$overall : $ operator is invalid for atomic vectors > accuracy NULL
答案 0 :(得分:1)
name
是一个角色对象,而不是混淆矩阵。您应该使用get
confusionMatrix(m2pred,cats$Sex)-> wynik1
...
accuracy <- NULL
b_accuracy <- NULL
for (i in 1:100){
name <- get(paste0("wynik",i))
ac<- name$overall[1]
bac<- name$byClass[11]
accuracy <- c(accuracy, ac)
b_accuracy <- c(b_accuracy, bac)
}
accuracy
但这里的for
循环是一种令人费解的方式来获取您所追求的信息。此外,您正在增长(更改每次迭代的长度)accuracy
和b_accuracy
,这是不推荐的。我可能会推荐以下内容,它将您的所有混淆矩阵放入一个列表中,然后使用*apply
函数将您想要的部分提取到矢量中。
wynik_list <-
mget(x = paste0("wynik_", 1:100))
accuracy <-
sapply(wynik_list,
function(x) x$overall[1])
b_accuracy <-
sapply(wynik_list,
function(x) x$byClass[11])