遍历 Shiny 仪表板的 link 树

Traverse a link tree for Shiny dashboard

我正在制作一个具有典型“向下钻取”功能的交互式 Shiny 仪表板。数据库里有几十万个link。我正在努力获取主页,例如 whosebug.com/ 并找到其中的所有子文件夹,然后按页面视图排名。使用 shinydashboardD3 我会将其绘制到条形图上并允许用户从那里向下钻取。一旦他们点击另一个页面,就会发生相同的过程——拉出所有子文件夹、按页面浏览量排名、绘图等……从而允许遍历 link 树。

我尝试将 str_view() 与几个不同的正则表达式选项 /.*?//[a-z]+/ 一起使用,它们都为我提供了第一个子文件夹。但这会导致大量重复,因为它不考虑 link 路径中的其余文件夹。所以 whosebug.com/questions/ 将与 whosebug.com/questions/ask 一起被拉出,因为当我只需要结果为 /questions//tags/ 时,正则表达式会将两者识别为包含 /questions/ .

我也试过 strsplit() 看看这是否有助于识别所有行,例如,数据框的第 3 列空白,然后对每个行进行 SQL 查询links 针对数据库对它们进行排名,但由于我正在使用的网页太大,所以很快就会变得很麻烦。由于查询,它还会减慢仪表板的反应时间。

有没有人实现过这样的东西?如果是这样,将不胜感激。

如果你想测试我正在讨论的内容,这里是 reprex:

test <- c("www.whosebug.com/questions/","www.whosebug.com/questions/ask/","www.whosebug.com/tags/")
test %>% str_view("/.*?/")
test %>% str_view("/[a-z]+/")
test %>% strsplit("/")

这是您要找的吗?

test <- c("www.whosebug.com/questions/","www.whosebug.com/questions/ask/","www.whosebug.com/tags/")
library(stringr)
unique(str_split(test, "\/", simplify=TRUE)[,2])
# [1] "questions" "tags"