合并单列CSV文件并将文件名设为列名的R语言技术问题
解决方案
你需要先获取每个CSV文件的文件名,再将对应数据框的列名替换为该文件名,之后再合并。这里提供两种可行的写法:
方法一:用*set_names*批量命名列
library(tidyverse) # 获取文件名(不含路径),可选去掉.csv后缀 file_names <- list.files(path = 'C:/Users/Desktop/Standardized') %>% str_remove("\\.csv$") df <- list.files(path = 'C:/Users/Desktop/Standardized', full.names = TRUE) %>% map(read_csv) %>% # 批量读取文件 set_names(file_names) %>% # 给每个数据框设置列名 bind_cols()
方法二:读取时直接重命名列
library(tidyverse) file_paths <- list.files(path = 'C:/Users/Desktop/Standardized', full.names = TRUE) file_names <- file_paths %>% basename() %>% str_remove("\\.csv$") df <- map2(file_paths, file_names, ~ { read_csv(.x) %>% rename(!!.y := 1) # 将第1列重命名为对应文件名 }) %>% bind_cols()
关键说明
str_remove("\\.csv$")用于去掉文件名里的.csv后缀,如果你希望列名保留后缀,删除这一行即可。!!.y := 1里的1指代数据框的第1列(因你的CSV均为单列),通过非标准求值实现动态重命名。
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

