【发布时间】:2015-01-05 13:29:17
【问题描述】:
我正在尝试将已定义目录的所有文件夹和文件名读取到嵌套列表中,该列表将与顶层文件夹的数量一样长,然后每个列表元素的元素数量与子列表中的元素一样多-directory(如果是文件夹)以此类推,直到只有文件而没有文件夹的级别。
我的用例是我的 iTunes 音乐文件夹:
m <- "/Users/User/Music/iTunes/iTunes Media/Music" # set the path to the library folder
x <- list.files(m, recursive = FALSE) # get all artists names (folder names on top level)
# read all Albums and title of each song per album
lst <- setNames(lapply(paste(m, x, sep = "/"), list.files, recursive = T), x)
lst中每个元素的结构现在是:
#$`The Kooks` # artist name "The Kooks"
# [1] "Inside In Inside Out/01 Seaside.mp3" # album name "Inside In Inside Out", title "01 Seaside.mp3"
# [2] "Inside In Inside Out/02 See The World.mp3"
#...
#[16] "Konk/01 See The Sun.mp3" # second album of The Kooks
#[17] "Konk/02 Always Where I Need To Be.mp3"
我想要做的是让每个艺术家的条目嵌套列表,所以在示例中会有列表元素$TheKooks,它有 2 个(子)列表(每个专辑 1 个): $Inside In Inside Out 和 $Konk 并且每个专辑列表中都有一个标题名称向量(没有专辑名称)。
我(还)找不到关于 SO 的正确答案并尝试(不成功),除其他外:
list.files(m, recursive = TRUE)
和
lapply(lst, function(l) {
strsplit(l, "/")
})
如何正确操作?
附:
- 您可以将所需的输出视为一个列表结构,其中每个文件/文件夹名称仅出现在实际文件/文件夹中的频率。
- 作为最好的情况,我希望找到一个足够灵活的解决方案,以允许不同的文件夹级别,并且不需要像文件夹深度一样多的 显式 lapply 调用
【问题讨论】:
标签: r