首页 > 解决方案 > R list - 扩展向量元素以列出具有相同名称的元素

问题描述

我想知道是否有更短的方法来执行以下转换:

params <- list(A = 1, B = c(1, 2))  #   ->   list(A = 1, B = 1, B = 2)
purrr::lmap(params,
  ~ purrr::set_names(as.list(.x[[1]]),
                     rep(names(.x), length(.x[[1]])))
)

标签: rpurrr

解决方案


这是一个选项,我们unlist使用 'params' list,然后将每个元素转换为列表元素,as.list同时根据原始names的'params'设置'params'listrepnameslengthslist

setNames(as.list(unlist(params)), rep(names(params), lengths(params)))

或与stack/deframe

library(tibble)
as.list(deframe(stack(params)[2:1]))

推荐阅读