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

R循环遍历dataframe每列按条件过滤并生成独立dataframe或存入列表

基础R实现(无需额外安装包,效率最高)

直接用lapply遍历所有列名,过滤后统一存入列表,不需要手动写循环:

# 遍历所有列生成过滤结果列表
filtered_list <- lapply(colnames(test), function(col_name) {
  cur_col <- test[[col_name]]
  # 应用过滤规则,仅保留当前列,drop=FALSE保证返回dataframe格式
  test[(cur_col >= 0.8 & cur_col < 1) | (cur_col <= -0.8 & cur_col > -1), col_name, drop = FALSE]
})
# 给列表元素设置对应列名,方便后续提取
names(filtered_list) <- colnames(test)

使用时直接按列名提取即可,比如获取ice列的过滤结果:filtered_list$ice

如果需要把每列的过滤结果单独存为全局环境的独立dataframe,可以再加一行代码:

# 批量生成独立dataframe,命名规则为「原列名_filtered」
list2env(setNames(filtered_list, paste0(names(filtered_list), "_filtered")), envir = .GlobalEnv)

运行后全局环境会自动生成ice_filtered、eonia_filtered等独立数据框。


tidyverse 风格实现(适合习惯tidyverse语法的场景)

用purrr的map函数实现相同逻辑:

library(purrr)
library(dplyr)

filtered_list <- map(colnames(test), ~ {
  test %>%
    filter((!!sym(.x) >= 0.8 & !!sym(.x) < 1) | (!!sym(.x) <= -0.8 & !!sym(.x) > -1)) %>%
    select(all_of(.x))
}) %>% 
  set_names(colnames(test))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:54:04