根据 Roland在 R 中使用 sapply() 绘制标题的建议,我创建了以下循环,以从我的数据集中的每个选定变量中制作箱线图。
all.box=function(x) {
for (i in seq_along(x)) {
boxplot(x[,i], main = names(x)[i])
}
}
它很好地完成了这项工作,因为它提供了图表。有人可以向我指出如何使循环返回一些输出,比如箱线图中的 $out 以便能够看到它计算的异常值的数量吗?
非常感谢!
根据 Roland在 R 中使用 sapply() 绘制标题的建议,我创建了以下循环,以从我的数据集中的每个选定变量中制作箱线图。
all.box=function(x) {
for (i in seq_along(x)) {
boxplot(x[,i], main = names(x)[i])
}
}
它很好地完成了这项工作,因为它提供了图表。有人可以向我指出如何使循环返回一些输出,比如箱线图中的 $out 以便能够看到它计算的异常值的数量吗?
非常感谢!
在此处使用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 之前为输出对象分配内存。所以我认为xxapply
在这里使用家庭功能更简单。
如果你想从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
}