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



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

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

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

理想情况下,我希望每种类型的均值都有一个单一的数字向量(我手动运行每个向量的mean(头(t$a),2)和mean(尾(t$a),2)):

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

[1] 0.2516074   1.859141    0.09256118

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

[1] 1.859141    15064.77    1.859141

寻找一个聪明的lapply类型构造,以获得每个方法的数字向量,而不附加名称(在本例中为a,b,c)。谢谢!

n = 2
v = lapply(t, function(i) mean(head(i, n)))

变量v为list。为了得到一个矢量,只要用unlist

v = unlist(v)

使用as.vector

提取数字
as.vector(v)

对于尾部,只需使用

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

使用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

最新更新