如何在R中创建全局环境下所有dataframe/tibble的命名列表?
在R语言中自动创建全局环境所有dataframe/tibble的命名列表
完全可以不用手动硬编码,下面是两种简洁的实现方法,自动抓取全局环境里所有的dataframe和tibble生成命名列表:
方法一:ls() + mget() + Filter()
这种方法先筛选出目标对象名称,再批量获取对象,代码简洁高效:
# 筛选全局环境中所有dataframe/tibble的名称 df_names <- Filter( function(x) is.data.frame(get(x)) || inherits(get(x), "tbl"), ls(envir = globalenv()) ) # 生成命名列表,列表名就是原对象名 files_list <- mget(df_names, envir = globalenv())
方法二:eapply()遍历全局环境
通过遍历全局环境的所有对象,直接筛选出目标:
# 遍历全局环境,提取所有dataframe/tibble df_objects <- eapply( globalenv(), function(x) if (is.data.frame(x) || inherits(x, "tbl")) x else NULL ) # 移除列表中的NULL元素,得到最终命名列表 files_list <- Filter(Negate(is.null), df_objects)
补充说明
- 如果只想筛选tibble,可以把判断条件换成
tibble::is_tibble(x),但要确保已经加载tibble包 - 运行后
files_list的结构和你示例中的完全一致,列表的每个元素名对应原dataframe/tibble的名字,值就是对应的数据对象
内容的提问来源于stack exchange,提问作者Pontus Hedberg
相关产品推荐
相关产品推荐

