我正在为闪亮的应用设置网址。下面给出了一个url-list片段(url_patterns
)。在我的应用程序中,我使用此列表导航到给定网址的选项卡。但是,如果活动标签发生变化,我还想更新网址,为此我会使用url_list
。两个列表之间有一个(清晰)映射,所以我宁愿只维护一个并使用代码来创建另一个。这意味着将url_patterns
转换为url_list
(或相反)。我写了一个嵌套循环,将url_list
转换为url_patterns_re
。它似乎有效(即url_patterns_re
== url_pattern
),但我想知道是否有更好/更快的解决方案。
url_patterns <- list(
"base/single-mean/" = list("nav_radiant" = "Single mean", "tabs_single_mean" = "Summary"),
"base/single-mean/plot/" = list("nav_radiant" = "Single mean", "tabs_single_mean" = "Plot"),
"sample/sampling/" = list("nav_radiant" = "Sampling"),
"sample/sample-size/" = list("nav_radiant" = "Sample size")
)
url_list <- list("Single mean" =
list("tabs_single_mean" =
list("Summary" = "base/single-mean/",
"Plot" = "base/single-mean/plot/")),
"Sampling" = "sample/sampling/",
"Sample size"= "sample/sample-size/")
url_patterns_re <- list()
for (i in names(url_list)) {
res <- url_list[[i]]
if(!is.list(res)) {
url_patterns_re[[res]] <- list("nav_radiant" = i)
} else {
tabs <- names(res)
for (j in names(res[[tabs]])) {
url <- res[[tabs]][[j]]
url_patterns_re[[url]] <- setNames(list(i,j), c("nav_radiant",tabs))
}
}
}
all(unlist(url_patterns) == unlist(url_patterns_re))