R中没有循环的假阳性和假阴性
False positive and false negative without loop in R
我有以下数据框(简化示例)
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 在我的例子中。当然,我可以正确使用以下类型的 for 循环:
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
}
}
但是:是否有更有效的方法来使用逻辑索引而不是循环来完成此任务?
如果 df.b
是你的 data.frame,你根本不需要使用 for 循环。
FP <- sum(df.b$y.true == 'U' & df.b$yhat == 'E')
FN <- sum(df.b$y.true == 'E' & df.b$yhat == 'U')
我有以下数据框(简化示例)
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 在我的例子中。当然,我可以正确使用以下类型的 for 循环:
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
}
}
但是:是否有更有效的方法来使用逻辑索引而不是循环来完成此任务?
如果 df.b
是你的 data.frame,你根本不需要使用 for 循环。
FP <- sum(df.b$y.true == 'U' & df.b$yhat == 'E')
FN <- sum(df.b$y.true == 'E' & df.b$yhat == 'U')