我有一个我要重命名的照片文件夹。照片存储在几个子文件夹中,我想重命名照片,使用R在文件名中包含相应的元数据。
如果我使用以下方法创建文件名列表:
LF<-list.files(recursive=TRUE)
我得到这样的东西:
[1] "1-South/L14_4848.jpg" "1-South/L14_4849.jpg" "1-South/L14_4850.jpg"
[4] "1-South/L14_4851.jpg" "1-South/L14_4852.jpg" "2-North/L14_4854.jpg"
[7] "2-North/L14_4855.jpg" "2-North/L14_4856.jpg" "2-North/L14_4857.jpg"
[10] "2-North/L14_4858.jpg" "3-East/L14_4860.jpg" "3-East/L14_4861.jpg"
我有一个单独的数据框,其中包含每个文件的相应元数据。数据框包含匹配的照片名称(在这种情况下,文件以&#34开头; L&#34;)
Date<-"2014-04-28"
Location<-"ALK"
Site<-"PR2"
Habitat<-"Forest"
Quad<-1:12
Photo<-c("L14_4848.jpg","L14_4849.jpg","L14_4850.jpg","L14_4851.jpg","L14_4852.jpg","L14_4854.jpg","L14_4855.jpg","L14_4856.jpg","L14_4857.jpg","L14_4858.jpg","L14_4860.jpg","L14_4861.jpg")
Meta<-data.frame(Date,Location,Site,Habitat,Quad,Photo)
如何重命名各个子目录中的照片文件,以包含在&#34; Meta&#34;中找到的元数据。数据框。理想情况下,照片的完成文件名将如下所示
Location_Site_Habitat_Quad_Date_Photo
或
ALK_PR2_Forest_1_2014-04-28_L14_4848.jpg
答案 0 :(得分:1)
试试这个,但在之前做一个备份:
LF <- LF[order(match(basename(LF), Meta$Photo))] # reorder if necessary
Meta <- Meta[, c("Location", "Site", "Habitat", "Quad", "Date", "Photo")] # col order
fn <- apply(Meta, 1, function(row) paste0(row, collapse = "_"))
file.rename(LF, file.path(dirname(LF), fn))