考虑以下tree
:计算每个文件夹在复杂文件夹结构中有多少个文件夹?
library(data.tree)
acme <- Node$new("Acme Inc.")
accounting <- acme$AddChild("Accounting")
software <- accounting$AddChild("New Software")
standards <- accounting$AddChild("New Accounting Standards")
research <- acme$AddChild("Research")
newProductLine <- research$AddChild("New Product Line")
newLabs <- research$AddChild("New Labs")
it <- acme$AddChild("IT")
outsource <- it$AddChild("Outsource")
agile <- it$AddChild("Go agile")
goToR <- it$AddChild("Switch to R")
我再要计算averageBranchingFactor
:
averageBranchingFactor(acme)
这就产生2.5
但是,由于种种原因,我希望能够得到所有分枝因子,不仅是平均分枝因子。例如,我需要这样做来统计比较两个文件结构,以考虑平均分支因素的显着差异。
根据manual对于data.tree
,AverageBranchingFactor()
函数执行以下操作:“计算每个非叶具有的分支的平均数量”。因此,我第一次尝试以下操作:
acme.df <- ToDataFrameTree(acme, "averageBranchingFactor")
mean(acme.df$averageBranchingFactor[acme.df$averageBranchingFactor>0])
这就产生2.375
,然后引导我去尝试一个简单的版本:
mean(acme.df$averageBranchingFactor)
这就产生0.8636364
如何在所有到达个别分支因素的平均值为2.5
?
理想情况下,我想创建一个data.frame
,列出每个文件夹,其中包含为每个文件夹列出分支因子的变量。例如,我有这个非常简单的文件夹结构:
top_level_folder
sub_folder_1
sub_folder_2
sub_folder_3
回答这个问题会涉及创建输出看起来像这样:
Folders Subfolders (BranchingFactor)
top_level_folder 2
sub_folder_1 0
sub_folder_2 1
sub_folder_3 0
能够容易地生成第一列通过调用list.dirs("/Users/username/Downloads/top_level/")
,但我不知道如何生成第二列。请注意,第二列是非递归的,这意味着子文件夹内的文件夹不计算在内(即top_level_folder
仅包含2个子文件夹,即使sub_folder_2
包含另一个文件夹sub_folder_2
)。
如果您想了解您的解决方案是否可缩放,请下载Rails代码库:https://github.com/rails/rails/archive/master.zip并尝试使用Rails更复杂的文件结构。
将您的代码应用于[https://github.com/rails/rails/archive/master.zip](https://github.com/rails/rails/archive/master.zip),'result'是不正确的 – parth
原因是:'长度(dir(path = dirs [i]))'也计数'.yml'和'.md'文件 – parth
你是对的谢谢你!查看编辑后的版本。看起来,前面的代码(在循环中使用'dir'而不是'list.dirs'来计算所有文件和目录。 – Gilles