【问题标题】:output from "for" loop“for”循环的输出
【发布时间】:2013-05-20 19:20:06
【问题描述】:

根据Plot titles in R using sapply() 的 Roland 建议,我创建了以下循环,以使用我的数据集中的每个选定变量制作箱线图。

all.box=function(x) {
  for (i in seq_along(x)) {
    boxplot(x[,i], main = names(x)[i])
  }
}

它很好地完成了这项工作,因为它提供了图表。有人可以向我指出如何使循环返回一些输出,比如箱线图中的 $out 以便能够看到它计算的异常值的数量吗?

非常感谢!

【问题讨论】:

  • 我同意@agstudy,如果你想返回结果,使用*applyforeach 循环比设置for 循环更方便。我建议使用for 循环,因为您声称想要这些情节并且没有说要返回其他任何内容。

标签: r for-loop boxplot outliers


【解决方案1】:

在这里使用lapply 可以更好地避免for 的副作用:

all.box=function(x) {
  res <- lapply(seq_along(x),function(i){
     boxplot(x[,i], main = names(x)[i])$out
  })
  res
}

PS:您可以继续使用for,但您需要在循环中附加一个列表作为结果,或者在调用 boxplot 之前为输出对象分配内存。所以我觉得这里用xxapplyfamily函数比较简单。

【讨论】:

  • 这确实更有意义。谢谢!
【解决方案2】:

如果你想从for 循环返回一些东西,如果它不是一个列表,那么预先分配返回对象是非常重要的。否则for 多次迭代的循环会很慢。我建议特别阅读R inferno 和Circle 2。

all.box=function(x) {
  result <- list()
  for (i in seq_along(x)) {
    result[[i]] <- boxplot(x[,i], main = names(x)[i])$out
  }
  result
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2021-11-29
    相关资源
    最近更新 更多