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

在R(dplyr)中按名称条件筛选数据框列表

解决方法

要实现按数据框名称(奇数编号)自动筛选,核心是把数据框和它的名称绑定存储——单纯的列表只保存数据框对象,不会记录原变量名。下面分两种场景给出方案:

场景1:还未创建数据框列表(推荐方式)

直接用字典存储数据框,键为数据框名称,值为对应的数据框对象,之后通过筛选键来提取目标数据框:

# 1. 将数据框存入字典(键是名称,值是数据框)
df_dict = {
    "DF_1": DF_1,
    "DF_2": DF_2,
    "DF_3": DF_3,
    "DF_4": DF_4,
    "DF_5": DF_5
}

# 2. 筛选名称含奇数编号的数据框
# 拆分名称提取编号,判断是否为奇数
filtered_dfs = [df for name, df in df_dict.items() if int(name.split("_")[1]) % 2 == 1]

场景2:已经存在df_list列表

如果已经有了df_list,可以通过当前命名空间(全局/局部)匹配数据框对象对应的变量名,再筛选:

# 从全局命名空间中匹配df_list里的数据框及其名称
# 仅匹配以"DF_"开头的变量,避免误匹配
df_name_map = {name: obj for name, obj in globals().items() if obj in df_list and name.startswith("DF_")}

# 筛选奇数编号的数据框
filtered_dfs = [df for name, df in df_name_map.items() if int(name.split("_")[1]) % 2 == 1]

注意事项

  • 如果是在函数内部操作,把globals()换成locals(),获取当前函数的局部命名空间。
  • 用globals()/locals()时,要确保没有其他同名的DataFrame对象,否则会出现匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:40:28