如何遍历R环境中所有数据框并找出无数据的对象名称
解决方案
可以通过以下方式实现自动遍历并检查空数据框:
基础循环写法
直接遍历全局环境中的所有对象,筛选出数据框类型且行数为0的对象名称:
get_empty_dataframes <- function() { # 获取全局环境的所有对象名称 all_objs <- ls(envir = .GlobalEnv) empty_df_names <- c() for (name in all_objs) { current_obj <- get(name, envir = .GlobalEnv) # 判定是否为数据框且行数为0 if (is.data.frame(current_obj) && nrow(current_obj) == 0) { empty_df_names <- c(empty_df_names, name) } } return(empty_df_names) }
调用函数即可得到结果:
get_empty_dataframes()
简洁的purrr风格写法
如果习惯使用tidyverse工具链,也可以用purrr包简化代码:
library(purrr) get_empty_dataframes <- function() { ls(.GlobalEnv) %>% map(get) %>% set_names(ls(.GlobalEnv)) %>% keep(~is.data.frame(.) && nrow(.) == 0) %>% names() }
关键说明
ls(envir = .GlobalEnv):获取全局环境下的所有对象名称get(name):根据对象名称调取对应的实际对象is.data.frame():确保只检查数据框类型的对象nrow(.) == 0:判断数据框是否无观测数据
内容的提问来源于stack exchange,提问作者h09812349
相关产品推荐
相关产品推荐

