r - R - 加载多个 csv 文件并从名称中删除 .csv
问题描述
我在用于存放所有 .csv 文件的基本目录中有一些文件
base_dir <- file.path(path)
file_list <- list.files(path = base_dir, pattern = "*.csv")
我想一次加载所有这些:
for (i in 1:length(file_list)){
assign(file_list[i],
read.csv(paste(base_dir, file_list[i], sep = ""))
)}
但是,这会在 R 中生成名称中带有“.csv”的文件。
我想做的是加载所有文件,但一旦加载它们,就从名称中删除“.csv”。
我尝试了以下方法:
for (i in 1:length(file_list)){ assign(file_list[i],
read.csv(substr(paste(base_dir, file_list[i], sep = ""), 1,
nchar(file_list[i]) -4))
)}
但我收到一个错误: No such file or directory
有没有办法有效地做到这一点?
解决方案
通常,人们会将它们读入一个列表,而不是将它们作为自由对象在工作区中四处飘荡。使用dir
orSys.glob
生成完整路径名,然后使用read.csv
读取每个路径名。L 的名称将是路径名,因此将它们简化为基本名称并删除 .csv 。
# paths <- dir(path = path, pattern = "\\.csv$", full = TRUE)
paths <- Sys.glob(sprintf("%s/*.csv", path))
L <- Map(read.csv, paths)
names(L) <- sub("\\.csv$", "", basename(names(L)))
如果您真的希望它们作为自由浮动对象,请添加以下内容:
list2env(L, .GlobalEnv)
推荐阅读
- php - (PHP) 下载后文件名有问题
- hibernate - 我们可以使用 Hibernate 插入/更新多个表吗
- python-sphinx - 无法使本地 sphinx-apidoc 模板工作
- c# - C#:如何在一个文件中读取 'éóú' 和 öäü 等字符?
- autodesk-bim360 - GET Project Roles 返回账户中的所有角色
- apache - Apache 2.4 服务器未读取 .htaccess 文件
- reactjs - 为什么我得到 JSX 元素必须有父元素?
- c# - neo4j c#获取所有数据
- java - 使用 Arraylist 从 Map 中的值获取键?
- spring - 使用 Spring 的登录页面