我的最终目标是为data.frame
或matrix
的列收集摘要统计信息的列表。例如,如果我有一个包含三个变量/列的data.frame
,我可能想知道每列的平均值,中位数和标准差。我想做的是拥有一个可以接受任意函数列表的函数。我知道类似的东西会解决问题
summarise = function(x, stats = list(mean, median, sd, length)){
lapply(stats, function(stat){apply(x, 2, stat)})
}
但是如何用所应用的统计信息/函数的名称标记结果的元素?例如,如果x
是
x = matrix(1:9, nc = 3)
那我怎么写函数summarise
以便我得到
> summarise(x)
$mean
[1] 2 5 8
$median
[1] 2 5 8
$sd
[1] 1 1 1
$length
[1] 3 3 3
返回结果?
答案 0 :(得分:1)
简单选项是在OP的summarise
函数中具有命名输出
summarise <- function(x, stats = list(mean = mean, median = median,
sd = sd, length = length)){
lapply(stats, function(stat){apply(x, 2, stat)})
}
summarise(x)
#$mean
#[1] 2 5 8
#$median
#[1] 2 5 8
#$sd
#[1] 1 1 1
#$length
#[1] 3 3 3
或者,如果我们使用dplyr::lst
或purrr::lst
,它将自动重命名list
元素
summarise <- function(x, stats = dplyr::lst(mean, median,
sd, length)){
lapply(stats, function(stat){apply(x, 2, stat)})
}
summarise(x)
#$mean
#[1] 2 5 8
#$median
#[1] 2 5 8
#$sd
#[1] 1 1 1
#$length
#[1] 3 3 3