Сохранение результатов из функции getOutlier в цикле for - PullRequest
0 голосов
/ 30 июня 2018

Вернемся снова с вопросом, который поставил меня в тупик. Это немного похож на этот пост: Как я могу увидеть выброс нескольких переменных в одном блокпосте, используя R? , но я пытаюсь перебрать больше, чем просто столбец.

Ниже приведен мой несколько воспроизводимый код:

library(extremevalues)
data(cars)
result<-list()
nFits<-list()
methodz<-c("I","II")
dists<-c("exponential","normal","lognormal","pareto","weibull")
for (i in seq_along(methodz)){
    for(j in seq_along(dists)){
        for(k in 1:ncol(cars)){
           nFits[[i]]   <-getOutliers(cars[k],
                       method=methodz[i],distribution=dists[j])$nFit
      result<-nFits
     }
   }
} 

Моя цель - изучить крайние значения каждого из моих постоянных результатов, чтобы определить наиболее подходящий курс действий. Для каждой переменной я хочу запустить функцию getOutliers для обоих типов методов и для всех 5 распределений и сохранить nFit, yMin и yMax во фрейм данных для просмотра. nFits, yMin и yMax выводятся из getOutliers.

Я знаю, что не правильно подписываюсь на каждый из объектов списка, так как постоянно получаю сообщение о неправильном количестве подписчиков. Будем благодарны за любые советы, которые вы можете предложить!

1 Ответ

0 голосов
/ 30 июня 2018

Один из вариантов - создать вложенный list, а затем присвоить ему выход getOutliers

methodz <- c("I","II")
dists <- c("exponential","normal","lognormal","pareto","weibull")
nFits <- replicate(length(methodz), vector("list", length(dists)), 
                     simplify = FALSE)
for (i in seq_along(methodz)){
    for(j in seq_along(dists)){
        for(k in seq_along(cars)){
           nFits[[i]][[j]][k]  <- getOutliers(cars[[k]],
                       method=methodz[i],distribution=dists[j])$nFit

     }
   }
} 
...