代码之家  ›  专栏  ›  技术社区  ›  Luca_brasi

如何使用R中的动态数据初始化bucket_列表?

  •  0
  • Luca_brasi  · 技术社区  · 4 年前

    我想用数据帧中的数据初始化R中的bucket_列表。假设我得到了以下数据:

    buckets <- data.frame(
      text=c("A","A","B"),
      labels=c(1,2,3)
    )
    

    然后我想实现以下bucket_列表:

    library(sortable)
    bucket_list(
      header="Test"
      ,add_rank_list(text = "A",labels = c(1,2))
      ,add_rank_list(text = "B",labels = c(1) )
    )
    

    我的问题是数据帧的内容 是动态的,所以我需要一个采用数据帧的解决方案 水桶

    非常感谢您的帮助!

    0 回复  |  直到 4 年前
        1
  •  2
  •   Ben    4 年前

    您可以将data.frame转换为分组列表。然后,使用 lapply 对于每组和 add_rank_list 将每个列表元素转换为 bucket_list

    library(sortable)
    
    buckets <- data.frame(
      text=c("A","A","B"),
      labels=c(1,2,3)
    )
    
    blst <- split(buckets$labels, buckets$text)
    
    rlst <- lapply(names(blst), function(x) {
      add_rank_list(
        text = x,
        label = blst[[x]]
      )
    })
    
    do.call(bucket_list, c(header = "New Test Here", rlst))
    
    推荐文章