【发布时间】:2020-02-06 19:41:31
【问题描述】:
我有以下数据集
structure(list(var1 = c(1, 0, 0, 0, 1, 0, 1, 1, 1, 1), var2 = c(0,
1, 0, 1, 1, 1, 1, 1, 1, 1), var = c(1, 1, 1, 0, 1, 0, 1, 1, 1,
1), var3 = c(1, 0, 1, 0, 1, 1, 1, 1, 1, 1), var5 = c(0, 1, 0,
1, 1, 0, 0, 0, 0, 0), ref = c(1, 1, 1, 1, 0, 0, 0, 1, 1, 1)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
我想在以“var”开头的每个变量和 ref var 之间迭代混淆矩阵函数。 形成每个函数应用程序(每个 var)我想将结果保存在一个新的数据框中,如下所示:
Variable Sensitivity
var1 1
var2 0.87
...
我写了以下代码:
library(Metrics)
k = grep("^var",colnames(data))
results<-as.data.frame(results <- lapply(k, FUN=function(x) {
cm = confusionMatrix(data=as.factor(data$ref), reference=as.factor(data[[x]]))
data.frame(
variable=names(data)[x],
Sensitivity = unname(cm$byClass[1])
) }))
我没有收到错误,但结果不是我想要的,因为我得到了这样的 data.frame
Variable Sensitivity Variable1 Sensitivity1 Variable2 Sensitivity2
var1 1 var2 0.76 var3 0.54
我哪里错了?
谢谢
【问题讨论】:
-
所以,您对敏感度值感到满意,但您想要此数据集的不同格式,对吧?
confusionMatrix是来自caret包吗? -
嗨 AntoniosK!是的!我对这些值感到满意,而不是在函数的每个应用程序中添加新行添加新列!是的,它是 caret 包中的confusionMatrix!
标签: r