如何为R语言列表中的每个DataFrame添加对应文件名列?
给列表中每个DataFrame添加对应文件名列的解决方案
你需要把数据框列表和对应的文件名列表一一配对处理,才能给每个DataFrame添加正确的来源文件名。之前的代码只遍历了数据框,没关联文件名,所以无法实现需求。以下是两种可行的方法:
方法1:使用基础R的Map()函数
library(dplyr) # 获取所有以"i_"开头的文件 list_of_files <- list.files(pattern = "i_") # 读取文件为DataFrame列表 my_data <- lapply(list_of_files, read.csv) # 给每个DataFrame添加文件名列 datamap <- Map(function(df, filename) { df %>% mutate(file_title = filename) }, my_data, list_of_files)
方法2:使用purrr包的map2()(更简洁)
如果你安装了purrr包(tidyverse系列工具,和dplyr搭配使用更顺手),可以用这个方法:
library(dplyr) library(purrr) list_of_files <- list.files(pattern = "i_") my_data <- lapply(list_of_files, read.csv) datamap <- map2(my_data, list_of_files, ~ .x %>% mutate(file_title = .y))
关键说明
- 两种方法都是把
my_data里的每个DataFrame和list_of_files里对应的文件名配对,保证每个DataFrame添加的是自己的来源文件名。 - 你之前的代码里
file_id()不是R内置函数,而且没有传递具体的文件名参数,所以无法生效。
内容的提问来源于stack exchange,提问作者Cameron
相关产品推荐
相关产品推荐

