r - 根据数据框中的字符串搜索和替换文件名。在 R 中
问题描述
我在一个文件夹中有几个文件,看起来像“blabla_A1_bla.txt”、“blabla_A1_bla.phd”、“blabla_B1_bla.txt”、“blablabla_B1_bla.phd”......一直到 H12。然后我有一个 df 来指示每个样本是哪个样本。
出色地 | 样本 |
---|---|
A1 | F32-1 |
B1 | F13-3 |
C1 | B11-4 |
... | ... |
我想根据表格重命名文件夹中的文件。这样 A1 被 F32-1 替换,B1 被 F13-3 替换,依此类推。
我已经使用 files<-list.files(directory) 创建了目录中所有文件的列表。我知道如何使用 stringr 包的 str_replace 函数来一一更改,但我不知道如何使其自动化。我想我需要一个循环来读取数据帧的单元格 1,1,在“文件”中搜索该字符串并将其替换为单元格 1,2 中的值。然后移动到单元格 2,1,依此类推。但我不知道如何编码。(或者如果有更好的方法来做到这一点)。
我会感谢你在这方面的帮助。
解决方案
我将首先创建一个新名称向量,然后使用该函数file.rename
:
files = c("blabla_A1_bla.phd","blabla_B1_bla.txt", "blablabla_B1_bla.phd")
patterns = c('A1', 'B1')
replace = c('F22', 'G22')
new.name = c()
for (f in files){
# first identify which pattern corresponds to file f (sis it A1, B1, ...)
which.pattern = which(sapply(patterns, grepl, x = f))
# and then replace it by the correct string
new.name = c(new.name, gsub(patterns[which.pattern], replace[which.pattern], f))
}
file.rename(files, new.name)
替换patterns
and replace
by df$well
anddf$sample
应该适用于您的情况。
推荐阅读
- visual-studio-2019 - 在 Visual Studio 2019 中,如何确保选项卡在转到定义后保持打开状态
- python-3.x - 为什么这个不和谐的斜线命令不起作用?
- python - 如何使用重采样转换 Dataframe - pandas
- qt - 使用Qt的QChartView绘制折线图时,折线代表的类别名称无法显示?
- android - 任务 ':app:compileFlutterBuildDebug' 执行失败。完成flutter clean,gradle clean,pub get,重新启动,仍然是同样的问题
- javascript - 'inStock' 被分配了一个值,但从未使用过 no-unused-vars
- php - 如何从 PHP 8 属性中获取方法名称(反射)
- arrays - Returning Two Dimensional Array from a Function in C
- protocol-buffers - use well-known types with cc_proto_library and py_proto_library from protobuf.bzl
- flutter - Flutter how export database or copy database