Ложный положительный и ложный отрицательный без l oop в R - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующий фрейм данных (упрощенный пример)

   y.true yhat
1       U    E
2       E    U
3       U    E
4       E    U
5       E    U
6       U    E
7       E    U
8       E    E
9       U    U
10      E    E

Мне нужно рассчитать количество ложных отрицательных (y.true==U,yhat==E) и ложных положительных (y.true==E,yhat==U), где E = 0, U = 1 в моем случае. Конечно, я мог бы исправить a для l oop типа:

FP<-0
FN<-0
for (i in 1:dim(df.b)[1]) {
  if (df.b[i,1]=='U' & df.b[i,2]=='E') {
    FN<-FN+1
  }
  else if (df.b[i,1]=='E' & df.b[i,2]=='U') {
    FP<-FP+1
  }
}

Однако: есть ли более эффективный способ выполнить эту задачу, используя логическое индексирование вместо al oop?

1 Ответ

3 голосов
/ 10 февраля 2020

Если df.b является вашим data.frame, вам вообще не нужно использовать for-l oop.

FP <- sum(df.b$y.true == 'U' & df.b$yhat == 'E')
FN <- sum(df.b$y.true == 'E' & df.b$yhat == 'U')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...