读取多个SAS数据集并生成同名数据框失败问题求助
解决方法
方式一:通过列表转环境批量生成同名数据框
先利用map读取所有数据集得到列表,给列表元素命名后,用list2env将其转为全局环境中的数据框:
# 假设dats是存储数据集名称的字符向量(如c("dat1", "dat2", "dat3", "dat4", "dat5")) sas_data_list <- map(dats, ~read_sas(paste0('E:\\R\\', .x, '.sas7bdat'))) # 给列表命名,确保与数据集名称一致 names(sas_data_list) <- dats # 将列表元素导入全局环境 list2env(sas_data_list, envir = .GlobalEnv)
方式二:修改函数直接在全局环境创建对象
调整readsas函数,用assign把读取后的tibble直接存入全局环境,同时用walk替代map(仅执行创建对象的操作,无需返回列表):
readsas <- function(x){ dat <- read_sas(paste0('E:\\R\\', x, '.sas7bdat')) # 以x的名称将数据框存入全局环境 assign(x, dat, envir = .GlobalEnv) } # 遍历执行函数 walk(dats, readsas)
原问题原因
你之前的代码中,map(dats, readsas)仅返回一个包含所有tibble的列表,但未将这些tibble赋值到全局工作环境中,因此只有控制台的列表输出,环境里不会生成单独的同名数据框。
内容的提问来源于stack exchange,提问作者jkatam
相关产品推荐
相关产品推荐

