【发布时间】:2017-11-14 19:30:07
【问题描述】:
我通过导入包含文件的文件夹结构创建了一个简单的data.tree。
if (!require("pacman")) install.packages("pacman")
pacman::p_load_gh("trinker/pathr")
library(pathr)
library(data.tree)
folder_structure <- pathr::tree(path = "/Users/username/Downloads/top_level/",
use.data.tree = T, include.files = T)
现在,我想将对象folder_structure 转换为data.frame,每个文件夹一行一行,一列指定每个文件夹包含多少个文件。我怎样才能做到这一点?
例如,我有一个非常简单的文件夹结构:
top_level_folder
sub_folder_1
file1.txt
sub_folder_2
file2.txt
回答这个问题需要创建一个如下所示的输出:
Folders Files
top_level_folder 0
sub_folder_1 1
sub_folder_2 1
第一列可以通过调用list.dirs("/Users/username/Downloads/top_level/")简单生成,但我不知道如何生成第二列。请注意,第二列是非递归的,这意味着不计算子文件夹中的文件(即 top_level_folder 包含 0 文件,即使 top_level_folder 的子文件夹包含 2 个文件)。
如果您想查看您的解决方案是否可扩展,请下载 Rails 代码库:https://github.com/rails/rails/archive/master.zip 并在 Rails 更复杂的文件结构上试用。
【问题讨论】:
-
我在哪里可以获得
pathr包? -
@Jimbou: github.com/trinker/pathr
-
您能否澄清
sub_folder_1是否指的是同一个文件夹? IE。是一个包含两个文件的文件夹,还是两个文件夹——同名,这不起作用——因此应该是sub_folder_1和sub_folder_2? -
@Felix - 那是个错误,应该是
sub_folder_2--对不起!我已经在问题中更正了它。
标签: r path tree hierarchical-data directory