如何计算 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
rowMeans
和 colMeans
的其他选择。
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
假设我有 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
rowMeans
和 colMeans
的其他选择。
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