Сопоставьте имена файлов, которые близки, но не точны - PullRequest
0 голосов
/ 20 июня 2020

У меня есть несколько списков с похожими именами, за исключением расширений. Мне удалось проиндексировать их, используя простой подход в квадратных скобках - L1[1] и L2[2] будут правильным совпадением. Однако у меня есть много файлов до go, и некоторые из них не соответствуют index number и index number.

В моем примере есть несколько недостающих файлов для одного типа. В моем первом реальном случае у меня есть 122 . json файлов и 119 .description файлов. Это отбрасывает индексный подход, который я использовал. Как я могу сопоставить правильные элементы списка в этом случае? Я пробовал несколько разных вариантов, используя сопоставление строк и разделение строк, но мне не повезло.

И на всякий случай да, эти метаданные извлекаются с помощью youtube-dl, но я являюсь автором видео.

Конечная цель - иметь две переменные VTT и DESC, который я могу использовать позже в моем сценарии R. Например, VTT будет равняться L1 [2], а DES C будет равняться L2 [индекс, в котором заголовки близко совпадают], например, имя файла без расширения или L2 [3].

Оба списка получены при использовании list.files(); однако позже в программе у меня нет full.names = TRUE, и я работаю только с самими именами файлов.

L1 <- c("c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/01 - Statistical Programming with R - Estimating f (Notation)/Statistical Programming with R - Estimating f (Notation).mp4.en.txt", 
+         "c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/02 - Statistical Programming - Expected Value/Statistical Programming - Expected Value.mp4.en.txt", 
+         "c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/03 - Linear Regression with R 01/Linear Regression with R 01.mp4.en.txt"
+ )

L2 <- c("c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/01 - Statistical Programming with R - Estimating f (Notation)/Statistical Programming with R - Estimating f (Notation).mp4.info.json", 
, 
"c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/03 - Linear Regression with R 01/Linear Regression with R 01.mp4.info.json",
"c:/ytdl//CradleToGraveR/Absolute Beginners Guide to Statistical Programming/02 - Statistical Programming - Expected Value/Statistical Programming - Expected Value.mp4.info.json"
)

Может, мой подход в целом неверен. Я думаю, что мой следующий подход будет заключаться в том, чтобы поместить список в data.frame и отключить расширение. Затем проанализируйте только окончание после пути к каталогу. Наконец, выполнить соединение или слияние двух кадров data.frames? Я чувствую, что делаю этот путь более сложным, чем следовало бы.

Есть предложения?

1 Ответ

1 голос
/ 20 июня 2020

Я думаю, что лучше оставить только ту часть строки, которая точно совпадает друг с другом, и сравнивать их.

Для общего примера, если мы сохраняем только имя файла без полного пути, удалите все после "." и сравните, что работает.

inds <- match(sub('\\..*', '', basename(L1)), sub('\\..*', '', basename(L2)))
inds
#[1] 1 3 2

Вы можете создать фрейм данных с обоими имена файлов в правильном порядке

data.frame(L1 = L1, L2 = L2[inds])
...