返回头部和尾部意味着从矢量列表

时间:2014-06-05 19:52:03

标签: r

我需要计算不同长度的矢量列表上的顶部x和底部x部分的平均值(或其他汇总函数)。

以下是3个不同长度的矢量列表,其格式与我正在使用的相似:

t <- list(a = exp(-4:3), b = exp(-2:12), c = exp(-5:3))

理想情况下,我想为每种类型的均值设置一个数字向量(我手动运行均值(head(t $ a),2))和均值(tail(t $ a),2))为每个向量):

理想输出产生每个向量的前两个元素均值的无名向量:

[1] 0.2516074   1.859141    0.09256118

每个向量中最后两个条目的第二个向量向量:

[1] 1.859141    15064.77    1.859141

寻找一个聪明的lapply类型构造来获得每个平均值的数字向量而没有附加的名称(在本例中为a,b,c)。谢谢!

2 个答案:

答案 0 :(得分:3)

怎么样?
n = 2
v = lapply(t, function(i) mean(head(i, n)))

变量v是列表。所以要获得一个向量,只需使用unlist

v = unlist(v)

要使用as.vector

提取数字
as.vector(v)

对于尾巴,只需使用

lapply(t, function(i) mean(tail(i, n)))

答案 1 :(得分:1)

使用sapply你可以将它包装在一个函数中:

sapply(dat,function(x,length=2)
  c(mean(head(x,length)),mean(head(x,length))))
# a         b          c
# [1,] 0.03405135 0.2516074 0.01252679
# [2,] 0.03405135 0.2516074 0.01252679