我需要计算不同长度向量列表的顶部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