在 R 中的特定条件下向 Table 添加行
Adding Row to Table Under Certain Conditions in R
我有以下两个向量:
> pred
[1] "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1"
[19] "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1"
> act
[1] "0" "1" "0" "1" "0" "1" "0" "0" "1" "0" "1" "1" "1" "1" "1" "1" "1" "1"
[19] "1" "0" "1" "0" "0" "1" "1" "0" "1" "0" "0" "1" "1"
我正在尝试通过这样做来制作这两个混淆矩阵:
> conf = table(pred, act)
> conf
act
pred 0 1
1 12 19
显然,由于pred
向量的每个向量都是1,所以这个混淆矩阵只有一行;第一项是错误分类的数量,第二项是正确分类的数量。
我正在为几种情况做这些混淆矩阵,一般来说,它们是 2 x 2,第一行对应的正确和错误分类为 0。但是,在这些条件下,混淆矩阵是 1 x 2,所以我想将这个矩阵设为 2 x 2,第一行为 0。像这样:
> matrix(c(rep(0, 2), conf[1, 1], conf[1, 2]), ncol = 2, byrow = TRUE)
[,1] [,2]
[1,] 0 0
[2,] 12 19
我想做的是,如果这个混淆矩阵的维度是 1 x 2,它就会变成 2 x 2 矩阵,否则就不管了。我试过这个:
> conf = ifelse(nrow(conf) == 1,
matrix(c(rep(0, 2), conf[1, 1], conf[1, 2]),
ncol = 2, byrow = TRUE),
conf)
但是,当我尝试这样做时,我得到以下结果:
> conf
[1] 0
我该如何解决这个问题?
您可以将 pred
和 act
转换为 factors
,将 levels
转换为 union
两者
all_levels <- union(act, pred)
pred <- factor(pred, levels = all_levels)
act <- factor(act, levels = all_levels)
table(pred, act)
# act
#pred 0 1
# 0 0 0
# 1 12 19
我有以下两个向量:
> pred
[1] "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1"
[19] "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1"
> act
[1] "0" "1" "0" "1" "0" "1" "0" "0" "1" "0" "1" "1" "1" "1" "1" "1" "1" "1"
[19] "1" "0" "1" "0" "0" "1" "1" "0" "1" "0" "0" "1" "1"
我正在尝试通过这样做来制作这两个混淆矩阵:
> conf = table(pred, act)
> conf
act
pred 0 1
1 12 19
显然,由于pred
向量的每个向量都是1,所以这个混淆矩阵只有一行;第一项是错误分类的数量,第二项是正确分类的数量。
我正在为几种情况做这些混淆矩阵,一般来说,它们是 2 x 2,第一行对应的正确和错误分类为 0。但是,在这些条件下,混淆矩阵是 1 x 2,所以我想将这个矩阵设为 2 x 2,第一行为 0。像这样:
> matrix(c(rep(0, 2), conf[1, 1], conf[1, 2]), ncol = 2, byrow = TRUE)
[,1] [,2]
[1,] 0 0
[2,] 12 19
我想做的是,如果这个混淆矩阵的维度是 1 x 2,它就会变成 2 x 2 矩阵,否则就不管了。我试过这个:
> conf = ifelse(nrow(conf) == 1,
matrix(c(rep(0, 2), conf[1, 1], conf[1, 2]),
ncol = 2, byrow = TRUE),
conf)
但是,当我尝试这样做时,我得到以下结果:
> conf
[1] 0
我该如何解决这个问题?
您可以将 pred
和 act
转换为 factors
,将 levels
转换为 union
两者
all_levels <- union(act, pred)
pred <- factor(pred, levels = all_levels)
act <- factor(act, levels = all_levels)
table(pred, act)
# act
#pred 0 1
# 0 0 0
# 1 12 19