列出与 R 中的条件匹配的文件
Listing files that match a criteria in R
我有一系列文件。每个文件名都有两个数字。第一个数字是代号,它可以是 0 - 250 之间的数字。下一个数字是型号,它在 1 - 450 之间。
一些例子:
Generation_Flux_0_Model_10.txt
Generation_Flux_0_Model_5.txt
Generation_Flux_1_Model_20.txt
Generation_Flux_2_Model_17.txt
Generation_Flux_5_Model_9.txt
Generation_Flux_55_Model_5.txt
Generation_Flux_117_Model_2.txt
Generation_Flux_8_Model_23.txt
我只想列出一组指定世代的文件。例如,获取第 1 代和第 8 代的文件应该只列出:
Generation_Flux_1_Model_20.txt and Generation_Flux_8_Model_23.txt.
我写了下面一行,它只产生了一个二进制值。
reactionFile = list.files(pattern = "\.txt$")
generations = c(0, 1, 8)
str_extract(reactionFile,"\d+")%in%generations
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
- 有没有办法在
list.files(pattern="") 参数?
- 另外,select 唯一需要的文件哪种方式会更快?
列出目录中的所有文件并获取子集或
使用 list.files()?
仅加载所需的文件
试试这个模式:
list.files(pattern = "^Generation_Flux_[18]_Model_\d+\.txt$")
这应该只匹配第 1 代和第 8 代,具有任何型号。
如果您有任意一组世代号,那么您可以动态构建一个交替,例如
getGens <- function(v) {
pat <- paste0("(", paste0(v, collapse="|"), ")")
return(pat)
}
gens <- c(1, 50, 100, 150) # or any values you wish to use
pat <- paste0("^Generation_Flux_", getGens(gens), "_Model_\d+\.txt$")
list.files(pattern = pat)
我有一系列文件。每个文件名都有两个数字。第一个数字是代号,它可以是 0 - 250 之间的数字。下一个数字是型号,它在 1 - 450 之间。
一些例子:
Generation_Flux_0_Model_10.txt
Generation_Flux_0_Model_5.txt
Generation_Flux_1_Model_20.txt
Generation_Flux_2_Model_17.txt
Generation_Flux_5_Model_9.txt
Generation_Flux_55_Model_5.txt
Generation_Flux_117_Model_2.txt
Generation_Flux_8_Model_23.txt
我只想列出一组指定世代的文件。例如,获取第 1 代和第 8 代的文件应该只列出:
Generation_Flux_1_Model_20.txt and Generation_Flux_8_Model_23.txt.
我写了下面一行,它只产生了一个二进制值。
reactionFile = list.files(pattern = "\.txt$")
generations = c(0, 1, 8)
str_extract(reactionFile,"\d+")%in%generations
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
- 有没有办法在 list.files(pattern="") 参数?
- 另外,select 唯一需要的文件哪种方式会更快? 列出目录中的所有文件并获取子集或 使用 list.files()? 仅加载所需的文件
试试这个模式:
list.files(pattern = "^Generation_Flux_[18]_Model_\d+\.txt$")
这应该只匹配第 1 代和第 8 代,具有任何型号。
如果您有任意一组世代号,那么您可以动态构建一个交替,例如
getGens <- function(v) {
pat <- paste0("(", paste0(v, collapse="|"), ")")
return(pat)
}
gens <- c(1, 50, 100, 150) # or any values you wish to use
pat <- paste0("^Generation_Flux_", getGens(gens), "_Model_\d+\.txt$")
list.files(pattern = pat)