r - 使用 R 根据元数据一次性重命名文件夹/目录
问题描述
我有一个关于根据元数据帧中的信息重命名文件夹的问题。在下面,您将找到我的目录结构和元数据的 .information 示例。这意味着名称为 S1 的文件夹将命名为 V_3_4 等。文件夹 S1、S2、S3 等可以在 D0 和 D1 文件夹中找到。
元数据框:
日期 | 样品名称 | S_number |
---|---|---|
2021_05_20 | V_3_4 | S1 |
2021_05_20 | V_9_4 | S2 |
2021_05_20 | H_13_5 | S3 |
目录结构:
main Directory
|
|___ 2021_metadata.txt
|___ Experiment
├── D0
├── Weather
|__ S1
|__ S2
│ └── Temperature
|__ S1
|__ S2
└── D1
├── Weather
|__ S1
|__ S2
|__ S3
└── Temperature
我试图用这段代码做到这一点:
name_file <- "./20210325_metadata_r_test_1.txt"
Metadataframe <- read.delim(name_file)
dirs <- list.dirs(path = path, recursive = TRUE, full.names = TRUE)
if(any(dirs %in% Metadataframe$S_number)){
for(dir in dirs[which(dirs %in% Metadataframe$S_number)]){
shell(paste("move", dir, Metadataframe$Sample_name[which(Metadataframe$S_number == dir)]))
}
}
当我想通过在 list.dirs 中放入特定文件夹的路径(例如 ~/main directory/experiment/D0/Weather)来单独执行此代码时,此代码将起作用。但是,我想一次性重命名所有文件夹(在 D0/温度、D1/天气和 D1/温度中也是如此)。我尝试从主目录执行 list.dirs() 以获取所有目录,但是代码没有做任何事情。它不会重命名文件夹。我做错了什么,有没有办法解决这个问题?
预先感谢您的帮助
解决方案
我猜你只需要另一个 for 循环。看看这是否有帮助
paths <- paste0("~/main directory/experiment/", c("D0/temperature", "D1/Weather", "D1/temperature"))
invisible(lapply(paths, function(path){
dirs <- list.dirs(path = path, recursive = TRUE, full.names = TRUE)
if(any(dirs %in% Metadataframe$S_number)){
for(dir in dirs[which(dirs %in% Metadataframe$S_number)]){
shell(paste("move", dir, Metadataframe$Sample_name[which(Metadataframe$S_number == dir)]))
}
}
return(NULL)
}))
推荐阅读
- powershell - 从特定参数集中获取所有参数
- angular - Ngx translate aot 编译:在生产代码中更改翻译
- angular - 量角器:如何绕过登录(Okta)进行 e2e 测试?
- git - git合并冲突后的npm错误
- javascript - 是否可以使用 Ajax 成功结果来填充 jQuery DataTable
- java - Spring WebFlux WebClient:接收部分响应
- mysql - 在 MySQL 中使用 UNION 的 ORDER BY 子句出错
- python - 使用 sympy 求解超越方程
- python - 如何检查加载的 Python 函数是否更改?
- r - 如何从 R 中只有 1 行的列表中删除数据框?