使用部分名称列表交叉引用 10k+ 文件名,以隔离匹配文件
Cross referencing 10k+ file names with partial-name list, to isolate matching files
我对 R(学习绳索的生物学家)还是很陌生,希望有人能提供帮助。
我有一个包含超过 10k+ 个文件的文件夹,每个文件名为“abc_Species name.filetype”,例如。 “abc_Panthera onca.filetype”、“abc_Boa constrictor.filetype”等。我需要从该文件列表中分离出对应于 1000 个特定物种的文件。到目前为止,我已经完成了基础操作,但在交叉匹配方面却很失败。
为了尝试不同的解决方案,我已经加载了各种包,但我无法看透,我不再确定哪些是必需的!这是我目前所拥有的:
library(filesstrings)
library(purrr)
library(stringr)
library(readr)
options(max.print=999999)
# Import file containing list of species of interest (among several columns,
# the one titled "Species" is the column of my 1000 species-of-interest -
# in that column are the list of Species names, most of which should be
# found among the titles of the 10k+ files)
Taxonomy <- read_csv("Taxonomy.csv")
#Create list of all of the 10k+ species files
Allspecieslist <- list.files(path = "C:/etc")
我尝试并失败的几个解决方案(也许只是因为我需要更多的演练,例如 )要求我复制并粘贴整个列表,我不能没有首先创建一个单独的文件:
capture.output(Allspecieslist, file = "Allspecieslist.txt")
有没有人能帮我提供一个代码,在所有物种列表中找到包含分类法(i.e.species-感兴趣)列表中提到的物种的所有文件名?一旦我有了相关匹配文件的列表,我就会在一个单独的文件夹中创建副本。
非常感谢
希望我答对了你的问题。我将以水果为例。
精确匹配
假设您的文件夹中包含 10 个水果文件,您希望提取橙子、火龙果和西瓜的文件名。
# this is your 10k files
Allspecieslist <- c("abc_apple.filetype", "abc_orange.filetype",
"abc_grape.filetype", "abc_melon.filetype",
"abc_mango.filetype", "abc_pear.filetype",
"abc_watermelon.filetype", "abc_dragon fruit.filetype",
"abc_kiwi fruit.filetype", "abc_durian.filetype")
# let's pretend these are your target species
Taxonomy <- data.frame(Fruit = c("orange", "dragon fruit", "melon"))
# google regex if you wish to know more about the matching patterns
output_list <- Allspecieslist[str_extract(Allspecieslist, "(?<=_).*(?=\.)") %in% Taxonomy$Fruit]
[1] "abc_orange.filetype" "abc_melon.filetype"
[3] "abc_dragon fruit.filetype"
人为创建列表
如果您确定您的目标物种在您的 10k 文件中,您实际上不需要匹配它们,您可以创建一个列表来匹配文件名样式。
prefix = ("abc_")
[1] "abc_"
suffix = (".filetype")
[1] ".filetype"
paste0(prefix, Taxonomy$Fruit, suffix)
[1] "abc_orange.filetype" "abc_dragon fruit.filetype"
[3] "abc_melon.filetype"
我对 R(学习绳索的生物学家)还是很陌生,希望有人能提供帮助。 我有一个包含超过 10k+ 个文件的文件夹,每个文件名为“abc_Species name.filetype”,例如。 “abc_Panthera onca.filetype”、“abc_Boa constrictor.filetype”等。我需要从该文件列表中分离出对应于 1000 个特定物种的文件。到目前为止,我已经完成了基础操作,但在交叉匹配方面却很失败。
为了尝试不同的解决方案,我已经加载了各种包,但我无法看透,我不再确定哪些是必需的!这是我目前所拥有的:
library(filesstrings)
library(purrr)
library(stringr)
library(readr)
options(max.print=999999)
# Import file containing list of species of interest (among several columns,
# the one titled "Species" is the column of my 1000 species-of-interest -
# in that column are the list of Species names, most of which should be
# found among the titles of the 10k+ files)
Taxonomy <- read_csv("Taxonomy.csv")
#Create list of all of the 10k+ species files
Allspecieslist <- list.files(path = "C:/etc")
我尝试并失败的几个解决方案(也许只是因为我需要更多的演练,例如
capture.output(Allspecieslist, file = "Allspecieslist.txt")
有没有人能帮我提供一个代码,在所有物种列表中找到包含分类法(i.e.species-感兴趣)列表中提到的物种的所有文件名?一旦我有了相关匹配文件的列表,我就会在一个单独的文件夹中创建副本。
非常感谢
希望我答对了你的问题。我将以水果为例。
精确匹配
假设您的文件夹中包含 10 个水果文件,您希望提取橙子、火龙果和西瓜的文件名。
# this is your 10k files
Allspecieslist <- c("abc_apple.filetype", "abc_orange.filetype",
"abc_grape.filetype", "abc_melon.filetype",
"abc_mango.filetype", "abc_pear.filetype",
"abc_watermelon.filetype", "abc_dragon fruit.filetype",
"abc_kiwi fruit.filetype", "abc_durian.filetype")
# let's pretend these are your target species
Taxonomy <- data.frame(Fruit = c("orange", "dragon fruit", "melon"))
# google regex if you wish to know more about the matching patterns
output_list <- Allspecieslist[str_extract(Allspecieslist, "(?<=_).*(?=\.)") %in% Taxonomy$Fruit]
[1] "abc_orange.filetype" "abc_melon.filetype"
[3] "abc_dragon fruit.filetype"
人为创建列表
如果您确定您的目标物种在您的 10k 文件中,您实际上不需要匹配它们,您可以创建一个列表来匹配文件名样式。
prefix = ("abc_")
[1] "abc_"
suffix = (".filetype")
[1] ".filetype"
paste0(prefix, Taxonomy$Fruit, suffix)
[1] "abc_orange.filetype" "abc_dragon fruit.filetype"
[3] "abc_melon.filetype"