首页 > 解决方案 > 计算R中列表中每个元素的平均值

问题描述

我有一个元素列表(每个元素都有不同的尺寸)。前两个元素如下所示:

> str(ldf[[1]]) 
'data.frame':   23 obs. of  23 variables:
 $ V1 : Factor w/ 23 levels "RS_number","rs11489820",..: 1 4 13 16 3 5 6 20 17 19 ...
 $ V2 : Factor w/ 10 levels "0.344","0.494",..: 10 9 8 1 4 7 4 7 7 6 ...
 $ V3 : Factor w/ 10 levels "0.235","0.357",..: 10 8 9 1 7 6 7 6 6 5 ...
 $ V4 : Factor w/ 11 levels "0.235","0.318",..: 11 4 1 10 5 8 5 2 2 3 ...
 $ V5 : Factor w/ 12 levels "0.35","0.502",..: 12 3 2 1 11 10 11 9 9 8 ...
 $ V6 : Factor w/ 12 levels "0.376","0.446",..: 12 3 2 1 10 11 10 9 9 8 ...
 $ V7 : Factor w/ 12 levels "0.35","0.502",..: 12 3 2 1 11 10 11 9 9 8 ...

> str(ldf[[2]]) 
'data.frame':   2 obs. of  2 variables:
 $ V1: Factor w/ 2 levels "RS_number","rs34687326": 1 2
 $ V2: Factor w/ 2 levels "1","rs34687326": 2 1

我正在尝试计算元素 1 中所有值的平均值。我使用了以下命令。

sapply(ldf, mean)

但我收到以下错误:

I am getting an error: Warning messages:
1: In mean.default(X[[i]], ...) :
  argument is not numeric or logical: returning NA

标签: r

解决方案


一个选项tidyverse

library(dplyr)
library(purrr)
map(A, ~ .x %>% 
       summarise(across(where(is.numeric), mean, na.rm = TRUE)))

数据

df3 <- data.frame(V1 = c("Hello", "World", "first"), V2 = c(1, 2, 3),    
                 V3 = c("Hello", "World", "Again"))
A <- list(df3, df3, df3)

推荐阅读