【发布时间】:2018-02-17 04:52:15
【问题描述】:
我正在使用 data.tree 结构来汇总文件夹中的各种信息。在每个文件夹中我有许多文件(Value),我需要为每个文件夹做的就是总结文件夹+所有子文件夹包含多少个文件。
示例数据:
library(data.tree)
data <- data.frame(pathString = c("MainFolder",
"MainFolder/Folder1",
"MainFolder/Folder2",
"MainFolder/Folder3",
"MainFolder/Folder1/Subfolder1",
"MainFolder/Folder1/Subfolder2"),
Value = c(1,1,5,2,4,10))
tree <- as.Node(data, Value)
print(tree, "Value")
levelName Value
1 MainFolder 1
2 ¦--Folder1 1
3 ¦ ¦--Subfolder1 4
4 ¦ °--Subfolder2 10
5 ¦--Folder2 5
6 °--Folder3 2
我目前对这个问题的解决方案非常缓慢:
# Function to sum up file counts pr folder + subfolders
total_count <- function(node) {
results <- sum(as.data.frame(print(node, "Value"))$Value)
return(results)
}
# Summing up file counts pr folder + subfolders
tree$Do(function(node) node$Value_by_folder <- total_count(node))
# Results
print(tree, "Value", "Value_by_folder")
levelName Value Value_by_folder
1 MainFolder 1 23
2 ¦--Folder1 1 15
3 ¦ ¦--Subfolder1 4 4
4 ¦ °--Subfolder2 10 10
5 ¦--Folder2 5 5
6 °--Folder3 2 2
您对如何更有效地执行此操作有什么建议吗?我一直在尝试构建一个递归方法,并在节点上使用函数“isLeaf”和“children”,但未能使其工作。
【问题讨论】:
标签: r recursion tree directory summarization