Given a root absolute directory path. How do I generate a dendrogram object of all path\'s below it so that I can visualize the directory tree with R?
Suppose the fo
Here's a possible approach to get what you originally asked for which is a system like tree. This will give a data.tree object that's pretty flexible and could be made to plot like you might want but it's not entirely clear to me what you want:
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)
You can get the parts you want (I think) but it'll require you to do the leg work and figure out conversion between data types in data.tree: https://cran.r-project.org/web/packages/data.tree/vignettes/data.tree.html#tree-conversion
I use this approach in my pathr package's tree function when use.data.tree = TRUE https://github.com/trinker/pathr#tree
EDIT Per@Luke's comment below...data.tree::as.Node takes a path directly:
(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