Создайте функцию, которая возвращает список факторов после применения функции для каждого значения вектора в R - PullRequest
2 голосов
/ 12 февраля 2020

У меня есть вектор вероятностей предсказания, и я хочу классифицировать вектор для каждого значения в пороговом векторе предсказания. Так что первый элемент списка будет фактором, классифицированным, когда порог равен 0, и последним элементом списка будет фактор, когда порог равен 1. Моя попытка ниже любой, любая помощь приветствуется.

set.seed(1)
Predictions=runif(100)
predClassify=function(x){

 Classifier=function(x,y){ifelse(x>=y,"Over","Under")}
  classThreshold=seq(0,1,.1)
  tmp=list()
  for(i in seq_along(classThreshold)){
    tmp[[?]]=as.factor(myClassifierFunc(x,classThreshold[i]))# not sure how to index this an outer for loop?
    return(tmp)
  }

classifiedList=predClassify(Predictions)

1 Ответ

2 голосов
/ 12 февраля 2020

Вместо создания пустого list создайте NULL list из length, равный length из 'classThreshold', а затем выполните присвоение с помощью tmp[[i]]

tmp <- vector('list', length(classThreshold))
for(i in seq_along(classThreshold)){
    tmp[[i]]=as.factor(myClassifierFunc(x,classThreshold[i]))
}

Использование полной функции

predClassify=function(x){

    Classifier <- function(x,y){ifelse(x >= y, "Over", "Under")}
    classThreshold <- seq(0,1,.1)
    tmp <- vector('list', length(classThreshold))
    for(i in seq_along(classThreshold)){
       tmp[[i]]=as.factor(Classifier(x,classThreshold[i]))

      }
     tmp
   }

-проверка

classifiedList <- predClassify(Predictions)
lengths(classifiedList)
#[1] 100 100 100 100 100 100 100 100 100 100 100
...