将sum / mean /等应用于列表

时间:2014-02-02 07:07:45

标签: r

在R中为什么我可以将均值/和/等应用于1-D向量而不是1-D列表?如何在列表上执行此类操作?

示例:

> myvector <- c(1,2,3,4)
> myvector
[1] 1 2 3 4
> sum(myvector)
[1] 10

> mylist <- list(1,2,3,4)
> mylist
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4
> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument

1 个答案:

答案 0 :(得分:3)

我认为最好的选择是使用unlist将列表缩减为向量,然后调用该函数。我创建了以下包装函数:

call_function_on_list = function(func, l) {
    func(unlist(l))
}
l = c(1,2,3,4)
call_function_on_list(mean, l)
# [1] 2.5
call_function_on_list(sd, l)
# [1] 1.290994
call_function_on_list(sum, l)
#  [1] 10