извлечь часть имени файла, используя gsub () - PullRequest
0 голосов
/ 08 января 2019

Я читаю несколько файлов .txt, используя list.file() и file.path(). Просто хотел разобрать полные пути и извлечь часть после последней «/» и перед «.»

Вот структура имен файлов:

"C:/Users/Alexandre/Desktop/COURS/FORMATIONS/THESE/PROJET/RESULTATS/Vessel features/Fusion/OK/SAT-DPL192C.txt"

Код, который я пробовал

# l <- list.files(pattern = "SAT(.+)*.txt")
# f <- file.path(getwd(), c=(l))
f <- c("C:/Users/Alexandre/Desktop/COURS/FORMATIONS/THESE/PROJET/RESULTATS/Vessel features/Fusion/OK/SAT-DPL192C.txt", "C:/Users/Alexandre/Desktop/COURS/FORMATIONS/THESE/PROJET/RESULTATS/Vessel features/Fusion/OK/SAT-DPL193D.txt")
d <- lapply(f, read.delim)
names(d) <- gsub(".*/(.*)..*", "1", f)

Последняя строка дает [1] "1" "1" вместо [1] "DPL192C" "DPL193D" и т.д ...

Я также пробовал синтаксис, такой как ".*/(.+)*..*, для сохранения части с тем же результатом.

1 Ответ

0 голосов
/ 08 января 2019

A . - это специальный символ, поэтому вам нужно его избежать. Пожалуйста, когда вы хотите захватить захваченное выражение, вам нужно использовать \\1, а не просто 1. Попробуйте это:

gsub(".*/(.*)\\..*", "\\1", f)
# [1] "SAT-DPL192C" "SAT-DPL193D"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...