我需要计算不同长度的矢量列表上的顶部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)。谢谢!
答案 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