反向键:嵌套列表中的值

时间:2015-06-20 17:14:33

标签: r shiny nested-lists

我正在为闪亮的应用设置网址。下面给出了一个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))

0 个答案:

没有答案