You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中依据数据框指定列均值筛选数据框列表

在R中使用purrr::keep根据数据框指定列的均值筛选数据框列表

你可以直接在判断逻辑中针对每个数据框提取第三列并计算均值,或者使用purrr的匿名函数语法快速实现筛选。以下是两种可行方案:

方案一:使用自定义判断函数

先定义一个接收数据框的函数,在函数内完成第三列提取、均值计算和条件判断,再将函数传入keep:

library(purrr)

# 创建目标数据框列表
df_list <- list(mtcars = mtcars, iris = iris)

# 定义判断函数:提取第三列计算均值,判断是否大于10
mean_logical <- function(df) {
  # 使用[[3]]提取第三列(返回向量,比[,3]更适配均值计算)
  mean(df[[3]], na.rm = TRUE) > 10
}

# 筛选符合条件的数据框
filtered_df_list <- keep(df_list, mean_logical)

方案二:使用匿名函数简化代码

如果不想单独定义函数,可以直接在keep中用purrr的公式风格匿名函数:

library(purrr)

df_list <- list(mtcars = mtcars, iris = iris)

# .x代表列表中的每个数据框元素
filtered_df_list <- keep(df_list, ~ mean(.x[[3]], na.rm = TRUE) > 10)

关键说明

  • 用df[[3]]提取第三列而非df[,3],是因为前者返回向量,后者可能返回单列数据框,mean()对向量的计算更直接。
  • 添加na.rm = TRUE是为了处理数据中可能存在的缺失值,避免均值计算返回NA导致判断失效。

内容的提问来源于stack exchange,提问作者Afeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:43:20