我有不等长的矢量列表。我想要的是平均值。在每个指数。例如:
a = c(2,3,4)
b = c(2,3,4,5)
c = c(5,0,3,4,6)
avg(a,b,c) = c(9/3, 6/3, 11/3, 9/2, 6/1)
如何在R中实现这一目标?
答案 0 :(得分:7)
我们可以将矢量放在rowMeans
中,填充NA用于具有较少元素数量的列表元素并执行lst <- list(a, b, c)
rowMeans(sapply(lst, `length<-`, max(lengths(lst))), na.rm=TRUE)
#[1] 3.000000 2.000000 3.666667 4.500000 6.000000
a <- 2:4
b <- 2:5
c <- c(5, 0, 3, 4, 6)
declare module ol {
function inherits(arg1:any, arg2:any);
........................
export class Collection<T> {
............................
答案 1 :(得分:3)
您可以在cbind.fill
包
rowr
功能
cbind
fill
选项为[{1}}的数据,并NA
对data.frame的colMeans
转换
t
答案 2 :(得分:1)
使用基数R:
ls <- list(a, b, c)
sapply(1:max(lengths(ls)), function(i) mean(sapply(ls, function(x) x[i]), na.rm = T))
# [1] 3.000000 2.000000 3.666667 4.500000 6.000000
我们的想法是在mean
上应用ls
函数(在列表中每个向量的1th, 2th, 3th, ...
上)并忽略NA
值。