我有一個功能,當我做這樣的工作。 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