首页 > 解决方案 > 根据数据框中的字符串搜索和替换文件名。在 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,依此类推。但我不知道如何编码。(或者如果有更好的方法来做到这一点)。

我会感谢你在这方面的帮助。

标签: r

解决方案


我将首先创建一个新名称向量,然后使用该函数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)

替换patternsand replaceby df$wellanddf$sample应该适用于您的情况。


推荐阅读