Создание фрейма данных путем объединения вывода списка - PullRequest
0 голосов
/ 09 мая 2020

Ниже приведен мой код, в котором использовалась функция Area, чтобы найти значение AU C и 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

Я бы например, мой вывод должен быть фреймом данных, где столбцы - AU C и Cutoff, и все значения представлены в одном фрейме данных, а не в нескольких фреймах данных.

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Используйте 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)
0 голосов
/ 09 мая 2020

Вот вариант с sapply

 sapply(seq(from=0.1, to=0.2, by=0.01), Area)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...