如何计算 R tibble 中列表的平均值?

How calculate average values for lists in R tibble?

假设我有 R tibble

  df <- tibble(
    name = c("x", "y"),
    prob = list(c(1,2,3), c(4,5,6))
  )

如何计算“概率”字段的平均值。

预期结果是一个包含值 c((1+4)/2, (2+5)/2, (3+6)/2) => c(2.5, 3.5, 4.5)

使用Reduce进行逐元素加法并将其除以数据帧中的行数。

Reduce(`+`, df$prob)/nrow(df)
#[1] 2.5 3.5 4.5

rowMeanscolMeans 的其他选择。

colMeans(do.call(rbind, df$prob))
rowMeans(do.call(cbind, df$prob))

我们可以使用 tidyverse 解决方案

library(dplyr)
library(purrr)
df %>%
   select(prob) %>%
   summarise(prob = reduce(prob, `+`)/n())
# A tibble: 3 x 1
   prob
  <dbl>
1   2.5
2   3.5
3   4.5