基于Roland在Plot titles in R using sapply()的建议,我创建了以下循环,以便在我的数据集中的每个选定变量中制作箱图。
all.box=function(x) {
for (i in seq_along(x)) {
boxplot(x[,i], main = names(x)[i])
}
}
它完美地完成了它提供图形的工作。有人可以指出我如何让循环返回一些输出,比如来自boxplot的$ out能够看到它计算出的异常值的数量吗?
Thanx很多!
答案 0 :(得分:3)
在此使用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
家庭功能更简单。
答案 1 :(得分:1)
如果你想从for
循环中返回一些内容,那么如果返回对象不是列表,则预先分配它是非常重要的。否则for
循环有很多次迭代会很慢。我建议特别阅读R inferno和第2圈。
all.box=function(x) {
result <- list()
for (i in seq_along(x)) {
result[[i]] <- boxplot(x[,i], main = names(x)[i])$out
}
result
}