我有一个功能,当我做这样的工作。 easyStats()
计算矢量的平均值,中位数,标准差,最大值和最小值。您可以使用lapply()
轻松使用它,并且可能会产生比您所展示的更令人满意的结果。以下是mtcars
前三列的示例。如果有NA值,您还可以添加na.rm = TRUE
。
lapply(mtcars[1:3], easyStats)
# $mpg
# mean median sd max min
# 20.091 19.200 6.027 33.900 10.400
#
# $cyl
# mean median sd max min
# 6.188 6.000 1.786 8.000 4.000
#
# $disp
# mean median sd max min
# 230.722 196.300 123.939 472.000 71.100
easyStats
被定义为
easyStats <- function (x, digits = 3L, ...) {
stopifnot(as.logical(length(x)), is.vector(x), is.numeric(x))
funs <- c("mean", "median", "sd", "max", "min")
mp <- mapply(function(f, ...) match.fun(f)(x, ...), funs, ...)
round(mp, digits = digits)
}
但对于您特定的问题,你可以调节功能
easyStats2 <- function(x, funs = c("mean", "median", "sd"), digits = 3L, ...) {
mp <- mapply(function(f, ...) match.fun(f)(x, ...), funs, ...)
round(mp, digits = digits)
}
,然后调用与
lapply(mtcars[1:3], function(x) as.list(easyStats2(x)))
如何在当前目录不能满足您的需求?你打算如何“循环”思考这份清单,以及你打算如何使用这些价值?我不清楚问题是什么。如果使用实际的可运行代码和示例数据来创建一个[可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)以重新创建您的确切的问题。 – MrFlick 2014-09-24 15:37:44