给出根绝对目录路径。如何生成其下面所有路径的树状图对象,以便可以使用R可视化目录树?

假设以下调用返回了以下叶子节点。
list.files(path, full.names = TRUE, recursive = TRUE)

root/a/some/file.R
root/a/another/file.R
root/a/another/cool/file.R
root/b/some/data.csv
root/b/more/data.csv

我想像unix tree程序的输出一样在R中作图:
root
├── a
│   ├── another
│   │   ├── cool
│   │   │   └── file.R
│   │   └── file.R
│   └── some
│       └── file.R
└── b
    ├── more
    │   └── data.csv
    └── some
        └── data.csv

如果解决方案涉及将文件系统树分解为两个data.frame,则它将特别有用:
  • 节点表(可以在其中包含修改日期等属性)
  • 和一个边表(也具有属性)

  • 然后根据这两个data.frame构建树形图对象。

    最佳答案

    这是一种获取您最初要求的系统(例如树)的可行方法。这将提供一个非常灵活的data.tree对象,可以按照您想要的方式进行绘制,但是对我来说,尚不清楚您想要什么:

    path <- c(
        "root/a/some/file.R",
        "root/a/another/file.R",
        "root/a/another/cool/file.R",
        "root/b/some/data.csv",
        "root/b/more/data.csv"
    )
    
    
    library(data.tree); library(plyr)
    
    x <- lapply(strsplit(path, "/"), function(z) as.data.frame(t(z)))
    x <- rbind.fill(x)
    x$pathString <- apply(x, 1, function(x) paste(trimws(na.omit(x)), collapse="/"))
    (mytree <- data.tree::as.Node(x))
    
    1  root
    2   ¦--a
    3   ¦   ¦--some
    4   ¦   ¦   °--file.R
    5   ¦   °--another
    6   ¦       ¦--file.R
    7   ¦       °--cool
    8   ¦           °--file.R
    9   °--b
    10      ¦--some
    11      ¦   °--data.csv
    12      °--more
    13          °--data.csv
    
    
    plot(mytree)
    

    您可以得到想要的部分(我认为),但这需要您做一些工作,并找出data.tree中的数据类型之间的转换:https://cran.r-project.org/web/packages/data.tree/vignettes/data.tree.html#tree-conversion

    tree https://github.com/trinker/pathr#tree时,我在路径包的use.data.tree = TRUE函数中使用了这种方法

    编辑 Per @ Luke在下面的评论... data.tree::as.Node直接采用路径:
    (mytree <- data.tree::as.Node(data.frame(pathString = path)))
    
                    levelName
    1  root2
    2   ¦--a
    3   ¦   ¦--some
    4   ¦   ¦   °--file.R
    5   ¦   °--another
    6   ¦       ¦--file.R
    7   ¦       °--cool
    8   ¦           °--file.R
    9   °--b
    10      ¦--some
    11      ¦   °--data.csv
    12      °--more
    13          °--data.csv
    

    关于r - 如何从目录树构建树状图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36094183/

    10-16 22:00