R: список файлов, возвращающих NA вместо имени файла

#r

#r

Вопрос:

Я пытаюсь получить имя файла для файла «cg3-chem-djtayl18PSY101.txt » который существует в моем рабочем каталоге с помощью следующих команд.

 regexName = "*chem-djtayl18*.txt"
fileName <- list.files(path = ".", pattern = regexName, ignore.case = TRUE)[1] # returning NA
 

Однако он возвращает имя файла как NA. Хотя он работает для 100 других файлов в том же каталоге таким же образом. Почему он ведет себя таким образом?

Комментарии:

1. ставит точки перед вашими звездочками .* в регулярном выражении. Это не глобусы оболочки

2. да, это сработало. как только я опубликовал это здесь, я обнаружил проблему 🙂

Ответ №1:

Потому что ваше регулярное выражение не соответствует имени файла.

 regexName = "*chem-djtayl18*.txt"
filename <- "cg3-chem-djtayl18PSY101.txt"
grepl(regexName, filename)
#[1] FALSE
 

Может быть, вам нужен шаблон.

 regexName = "chem-djtayl18.*\.txt"
grepl(regexName, filename)
#[1] TRUE