除了扩展名之外,我还有多个名称相似的列表。我能够使用一种简单的括号中的方法对它们进行索引-- L1[1]和L2[2]将是正确的匹配。但是,我有很多文件要看,其中有几个文件与索引号不匹配。
在我的示例中,有一种类型缺少几个文件。在现实世界的第一个例子中,我有122个.json文件和119个.description文件.这就抛开了我所使用的索引方法。在这种情况下,如何将正确的列表元素匹配起来?我尝试了几个不同的选项,使用字符串匹配和字符串拆分,但我没有运气。
以防万一,是的,这些元数据是使用youtube-dl提取的,但我是视频的作者。
最终目标是有两个变量VTT和DESC,我可以在后面的R脚本中使用它们。例如,VTT将等于L12,而DESC将等于标题紧密匹配的L2index,例如没有扩展名或L23的文件名。
这两个列表都来自于使用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"
)也许我的方法,总的来说,是错误的。我认为我的下一个方法是将list放到一个data.frame中,然后去掉扩展。然后只解析目录路径后面的结尾。最后,在两个data.frames上进行连接或合并?我觉得我把这条路弄得比应该的复杂多了。
有什么建议吗?
发布于 2020-06-20 01:47:57
我认为最好只保留字符串中与对方完全匹配的部分,并对它们进行比较。
对于共享的示例,如果我们只保留文件名而没有完整的路径,那么在"."之后去掉所有的内容并比较它的效果。
inds <- match(sub('\\..*', '', basename(L1)), sub('\\..*', '', basename(L2)))
inds
#[1] 1 3 2您可以按照正确的顺序创建具有两个文件名的数据文件。
data.frame(L1 = L1, L2 = L2[inds])https://stackoverflow.com/questions/62480685
复制相似问题