簡體   English   中英

列出與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和Generation_Flux_ 8 _Model_23.txt。

我寫了下面這行,只產生一個二進制值。

reactionFile = list.files(pattern = "\\.txt$")
generations = c(0, 1, 8)
str_extract(reactionFile,"\\d+")%in%generations

[1]是是是否否否否否是

  1. 有沒有辦法在list.files(pattern =“”)參數中指定此條件?
  2. 還有,哪種方式可以更快地選擇所需的文件? 列出目錄中的所有文件並使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM