R语言如何通过filenames中存储的名称访问对应dataframe
操作方法
- 方法1:直接通过
get()函数单次访问
这是最适配你现有代码的方案,直接把filenames中存储的变量名作为参数传入get()即可拿到对应的dataframe:
如果修改dataframe后需要把结果写回原变量,需要配合# 访问filenames中第1个位置对应的dataframe target_df <- get(filenames[1]) # 查看filenames中名为"user_info"的dataframe的前10行 head(get("user_info"), 10)assign()使用:# 给第2个dataframe新增来源列 temp <- get(filenames[2]) temp$source <- filenames[2] assign(filenames[2], temp) - 方法2:统一转成列表存储(更推荐)
你当前用assign()把所有dataframe散存在全局环境里,很容易出现命名冲突,也不方便批量操作,建议统一整理为命名列表:
之后访问更灵活:# 把所有dataframe汇总为命名列表,列表名和原文件名一致 df_list <- setNames(lapply(filenames, get), filenames)
如果你还没执行读文件的代码,也可以直接在读入阶段就生成列表,省略# 按索引访问第3个dataframe df_list[[3]] # 按文件名访问对应的dataframe df_list[["order_data"]] # 批量对所有dataframe计算行数 lapply(df_list, nrow)assign步骤,更简洁:# 直接读入所有csv为命名列表 filenames <- gsub("\\.csv$", "", list.files(pattern = "\\.csv$")) df_list <- setNames(lapply(paste0(filenames, ".csv"), read.csv, sep = ","), filenames)
内容的提问来源于stack exchange,提问作者thesecond
相关产品推荐
相关产品推荐

