我有一组长度不同的向量列表。我想要的是每个索引的平均数值。例如:
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中实现这一目标?
list
中,对于元素数量较少的列表元素进行NA填充,然后使用rowMeans
函数。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)
rowr
包中的cbind.fill
函数。fill
选项用NA
填充数据,然后对数据框的t
ranspose应用colMeans
函数。library(rowr)
colMeans(t(cbind.fill(a, b, c, fill = NA)), na.rm = T)
#[1] 3.000000 2.000000 3.666667 4.500000 6.000000
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
函数,并忽略NA
值。