将getOutlier函数的结果保存在for循环中

时间:2018-06-30 02:57:18

标签: r for-loop outliers

再次提出一个困扰我的问题。这是 与这篇帖子How can I see multiple variable's outlier in one boxplot using 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
     }
   }
} 

我的目标是检查我每个连续结果的极限值,以确定最合适的行动方案。对于每个变量,我都希望对两种方法类型以及所有5种分布都运行getOutliers函数,并将nFit,yMin和yMax保存到数据框中以供查看。 nFits,yMin和yMax都是getOutliers的输出。

我知道我没有正确地为每个列表对象下标,因为我不断收到不正确的下标数量错误。您能提供的任何建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

一种选择是创建嵌套的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

     }
   }
}