根据dataframe中的字符串搜索和替换文件名。在R

根据dataframe中的字符串搜索和替换文件名。在R,r,R,我在一个文件夹中有几个文件,看起来像“blabla_A1_bla.txt”,“blabla_A1_bla.phd”,“blablabla_B1_bla.txt”,“blablablabla_B1_bla.phd”…一直到H12。 然后我有一个df,它指示每个样本是哪个 好 样品 A1 F32-1 地下一层 F13-3 C1 B11-4 ... ... 我将首先创建一个新名称向量,然后使用函数file.rename: files = c("blabla_A1_bla.phd",

我在一个文件夹中有几个文件,看起来像“blabla_A1_bla.txt”,“blabla_A1_bla.phd”,“blablabla_B1_bla.txt”,“blablablabla_B1_bla.phd”…一直到H12。 然后我有一个df,它指示每个样本是哪个

好 样品 A1 F32-1 地下一层 F13-3 C1 B11-4 ... ...
我将首先创建一个新名称向量,然后使用函数
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)

df$well
df$sample
替换
patterns
df$sample
应该适合您的情况。

我会首先创建一个新名称向量,然后使用函数
文件。重命名

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)

df$well
df$sample
替换
模式和
replace
应该适合您的情况。

您可以创建替换和模式的命名向量,并在
str\u replace\u all

files <- list.files(directory)
files <- stringr::str_replace_all(files, setNames(df$sample, df$well))

files您可以创建替换和模式的命名向量,并在
str\u replace\u all

files <- list.files(directory)
files <- stringr::str_replace_all(files, setNames(df$sample, df$well))

文件从“参数”中显示“invalidad”。此外,使用file.rename时,我需要准确说出文件名,它不允许我(或我不知道如何)搜索名称的一部分。例如,如果我写file.rename(“A1”,“F32-1”),它会给我假,我必须说file.rename(“blablabla_A1_bla.phd”,“F32-1.phd”)。是的,我一开始意识到我没有正确理解你的问题。我相应地编辑了我的回答。然而,使用str_替换_all为@ronak Shah似乎带来了一个更简单的解决方案,它从“论点”中称为“无效”。此外,使用file.rename时,我需要准确说出文件名,它不允许我(或我不知道如何)搜索名称的一部分。例如,如果我写file.rename(“A1”,“F32-1”),它会给我假,我必须说file.rename(“blablabla_A1_bla.phd”,“F32-1.phd”)。是的,我一开始意识到我没有正确理解你的问题。我相应地编辑了我的回答。然而,使用str_替换_all为@ronak Shah似乎带来了一个更简单的解决方案。谢谢!我不得不强制df$以及df$样本作为字符,使其工作,但它工作得很好。谢谢!我不得不强制将df$well和df$sample作为字符,以使其工作,但随后它工作得非常完美。