Как определить регулярное выражение, которое я хочу? - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь перебрать файлы. Некоторые файлы с определенным именем должны использоваться внутри функции. Это выглядит так:

func <- function(number){
  fileList <- list.files(pattern=c("^Start_", number, "_end.csv"))
}

Я хочу использовать файл только с правильным номером в имени файла. Когда я теперь запускаю функцию с 10 в качестве параметра, она также берет файлы с 100 или 1000 в имени файла.

Это то, что я уже пробовал:

pattern=c("^Start_", number, "_end.csv")
pattern=c("^Start_", number, "^_end.csv")
pattern=c("^Start_", "^", number, "$", "_end.csv")

Все эти шаблоны также используют файлы с 100 и 1000 в имени файла, когда я запускаю функцию с 10 в качестве параметра.

Как я могу предотвратить это?

1 Ответ

0 голосов
/ 02 октября 2019

Параметр pattern для list.files должен принимать одно регулярное выражение string , а не вектор строк. Попробуйте эту версию:

func <- function(number) {
    fileList <- list.files(pattern=paste0("^Start_", number, "_end\\.csv$"))
}

Но, учитывая, что используемый вами шаблон регулярного выражения исправлен, использование регулярного выражения не имеет особого смысла. Однако, если вы хотите сопоставить серию идентификаторов за один раз, например, 20, 30 и 40, тогда регулярное выражение становится более полезным:

ids <- c(20, 30, 40)
regex <- paste(ids, collapse="|")
fileList <- list.files(pattern=paste0("^Start_(", regex, ")_end\\.csv$"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...