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

如何根据DataFrame名称设置条件过滤列表中的数据

问题分析与解决方案

你的原代码存在关键问题:在lapply遍历列表元素时,names(x)获取的是当前DataFrame的列名,而非列表元素本身的名称,导致判断条件永远无法触发。以下是两种可行的解决方法:

方法1:基础R实现(遍历列表名称)

通过遍历列表名称来匹配对应DataFrame,同时根据名称执行不同过滤逻辑:

library(dplyr)

# 遍历列表名称,获取对应DataFrame并过滤
FIF.result <- lapply(names(FIF.result), function(name) {
  df <- FIF.result[[name]]
  if (name == "A5") {
    df %>% filter(wskaznik > 20)
  } else {
    df %>% filter(wskaznik > 25)
  }
})
# 重新为过滤后的列表命名(lapply会丢失原名称)
names(FIF.result) <- c("A5", "A6")

方法2:使用purrr包的imap函数(更简洁)

purrr::imap可同时遍历列表元素和对应的名称,无需手动重新命名:

library(purrr)
library(dplyr)

FIF.result <- imap(FIF.result, function(df, name) {
  if (name == "A5") {
    df %>% filter(wskaznik > 20)
  } else {
    df %>% filter(wskaznik > 25)
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:35:42