【问题标题】:Creating a Dataframe by combining the list output通过组合列表输出创建数据框
【发布时间】:2020-05-09 04:49:32
【问题描述】:

下面是我的代码,其中使用了一个函数 Area 来查找 AUC 和 Cutoff 的值。

Area<-function(x){
library(ROCR)
library(Metrics)
log_predict <- predict(lr1,newdata = valid,type = "response")
log_predict <- ifelse(log_predict > x,1,0)
pr <- prediction(log_predict,valid$target)
perf <- performance(pr,measure = "tpr",x.measure = "fpr")
plot(perf)
a<-auc(valid$target,log_predict)
list(AUC=a,cutoff=x)
}
for (i in seq(from=0.1, to=0.2, by=0.01)){
  df<-as.data.frame(do.call(rbind, Area(i)))
  str(df)

}

我的输出是,

'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.779 0.1
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.78 0.11
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.779 0.12
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.778 0.13
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.776 0.14
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.773 0.15
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.77 0.16
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.767 0.17
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.763 0.18
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.759 0.19
'data.frame':   2 obs. of  1 variable:
 $ V1: num  0.756 0.2

我希望我的输出是一个数据框,其中列是 AUC 和 Cutoff,并且值都表示在一个数据框中,而不是在多个数据框中。

【问题讨论】:

    标签: r list function dataframe for-loop


    【解决方案1】:

    使用lapply 依次为不同的值传递Area 函数。

    df <- do.call(rbind.data.frame, lapply(seq(from=0.1, to=0.2, by=0.01), Area))
    

    purrr 中,我们可以使用map_df,这样会更短。

    df <- purrr::map_df(seq(from=0.1, to=0.2, by=0.01), Area)
    

    【讨论】:

      【解决方案2】:

      这是sapply的选项

       sapply(seq(from=0.1, to=0.2, by=0.01), Area)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        • 2021-01-26
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2021-01-01
        • 2022-12-03
        相关资源
        最近更新 更多