Сообщение об ошибке приходит из строки
cm_train_rest <- caret :: confusionMatrix(cm_train_rest, mode = "prec_recall", positive="1")
и говорит, что cm_train_rest должно иметь такое же количество столбцов и строк, что не имеет место.
К вашему основному вопросу:
Accuracy[i,] <- as.vector(cm_train_rest$overall['Accuracy'])
также не будет работать, поскольку я храню в вас значения cos_sim_values , которые нельзя использовать в качестве индекса.
Кроме того, в
train_rest_loop['Rest_Cos_Sim'] <- ifelse(train_rest_loop$Rest_Cos_Sim >= i, 1,0)
вы перезаписываете столбец Rest_Cos_Sim того, что вам, возможно, не нужно.
Возможно, следующее приближает вас к ожидаемому результату:
library("caret")
library("e1071")
cos_sim_values <- seq(0,1, by=0.05)
Accuracy <- matrix(NA, nrow=length(cos_sim_values), ncol=2) # Empty Matrix
train_rest_loop <- data.frame(ground=factor(c(1,1,1,1,1,0)), Rest_Cos_Sim=c(0.25,0.20,0.35,0.25,0.25,0.30))
for (idx in 1:length(cos_sim_values)) { #use idx as an index which ranges from 1 to the length of cos_sim_values
i <- cos_sim_values[idx] #Get the idx'th values of cos_sim_values
tt <- factor(ifelse(train_rest_loop$Rest_Cos_Sim >= i, 1,0), levels = c(0,1))
cm_train_rest <- table(train_rest_loop$ground, tt)
cm_train_rest <- caret :: confusionMatrix(cm_train_rest, mode = "prec_recall", positive="1")
Accuracy[idx,] <- c(i, as.vector(cm_train_rest$overall['Accuracy']))
}