名称与列表名称相同的字符向量

lik*_*zza 6 r vector named dataframe

我有一个看起来像这样的列表.

my_list <- list(Y = c("p", "q"), K = c("s", "t", "u"))
Run Code Online (Sandbox Code Playgroud)

我想用它们所在列表的名称命名每个列表元素(字符向量).同一向量的所有元素必须具有相同的名称

我能够编写适用于单个列表元素的此函数

name_vector <- function(x){
      names(x[[1]]) <- rep(names(x[1]), length(x[[1]]))
      return(x)
    }

> name_vector(my_list[1])
$Y
  Y   Y 
"p" "q" 
Run Code Online (Sandbox Code Playgroud)

但无法找到一种矢量化的方法.如果我使用apply函数运行它,它只会返回列表不变

> lapply(my_list, name_vector)
$K
[1] "p" "q"

$J
[1] "x" "y"
Run Code Online (Sandbox Code Playgroud)

我想要的my_list输出是一个命名向量

 Y   Y   K   K   K  
"p" "q" "s" "t" "u"
Run Code Online (Sandbox Code Playgroud)

akr*_*run 8

我们unlistlist同时,通过设置名称replicating

setNames(unlist(my_list), rep(names(my_list), lengths(my_list)))
Run Code Online (Sandbox Code Playgroud)

或者stack进入两列data.frame,提取'values'列并用'ind'命名

with(stack(my_list), setNames(values, ind))
Run Code Online (Sandbox Code Playgroud)