【发布时间】:2013-11-29 22:17:45
【问题描述】:
假设我有一个输入文件,其中每一行都包含从根 (A) 到叶子的路径
echo "A\tB\tC\nA\tB\tD\nA\tE" > lines.txt
A B C
A B D
A E
如何轻松生成结果树?:(A(B(C,D),E))
我想使用 GNU 工具(awk、sed 等),因为它们往往更适合处理大文件,但 R 脚本也可以。 R 输入将是:
# lines <- lapply(readLines("lines.txt"), strsplit, " +")
lines <- list(list(c("A", "B", "C")), list(c("A", "B", "D")), list(c("A","E")))
【问题讨论】:
-
R is 是一个“GNU 工具”:) 如果您想使用 awk 或 sed,输出会是什么?在我看来,无论如何您都希望将输出作为 R 中的列表,不是吗?
-
对列表进行排序,然后取连续两行中最大的前缀。第二行的后缀是新的。
-
我会使用 perl 哈希。您使用路径部分沿着散列树向下走。完成后,将元素的子键括在括号中,等等。 Python 也会有类似的概念。
-
@janos 一个字符串可以工作
-
@Coroos 我不确定我是否理解你的方法,你能详细说明一下吗?
标签: r algorithm shell data-structures tree