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

如何在R语言中解析所有变量?筛选_df结尾变量的实现方法

在R中筛选并操作名称以"_df"结尾的变量

在R里要搞定这个需求其实很直接,分几步就能实现:

1. 先找出所有目标变量名

用ls()配合正则表达式,就能精准揪出当前环境里所有以_df结尾的变量:

# 筛选所有以_df结尾的变量名
df_vars <- ls(pattern = "_df$")

这里的_df$是正则规则,$代表匹配字符串的末尾,保证只选中真·以_df收尾的变量,不会误判中间带_df的情况。

2. 把变量名转换成实际的对象

拿到变量名后,用mget()把这些字符串转成对应的data.frame对象,存成列表方便批量操作:

# 将变量名转为对应的data.frame列表
df_list <- mget(df_vars)

现在df_list里的每个元素就是你要处理的数据集了。

3. 批量执行你需要的操作

接下来就可以用lapply()或者purrr包的工具批量处理列表里的每个数据框,举几个常用例子:

示例1:批量查看每个数据框的结构

# 给每个数据框跑一遍str()查看结构
lapply(df_list, str)

示例2:给每个数据框新增一列标记来源变量名

# 用Map把变量名和对应数据框绑定,批量加列
df_list_updated <- Map(function(df_name, df) {
  df$source_var <- df_name
  df
}, df_vars, df_list)

示例3:把处理完的数据框放回全局环境

如果想把修改后的结果重新放回全局环境用,用list2env()就行:

# 将更新后的列表导出到全局环境
list2env(df_list_updated, envir = .GlobalEnv)

额外提示:非全局环境的情况

如果你是在函数内部操作,不是全局环境,只要给ls()和mget()指定envir参数就行,比如:

my_process_func <- function() {
  iris_df <- iris
  mtcars_df <- mtcars
  # 筛选当前函数环境里的_df变量
  df_vars <- ls(pattern = "_df$", envir = environment())
  df_list <- mget(df_vars, envir = environment())
  # 这里写你的处理逻辑...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:15:42