簡體   English   中英

名稱與列表名稱相同的字符向量

[英]name character vectors with same name of list

我有一個看起來像這樣的列表。

my_list <- list(Y = c("p", "q"), K = c("s", "t", "u"))

我想用它們所在列表的名稱命名每個列表元素(字符向量)。同一向量的所有元素必須具有相同的名稱

我能夠編寫適用於單個列表元素的此函數

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" 

但無法找到一種矢量化的方法。 如果我使用apply函數運行它,它只會返回列表不變

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

$J
[1] "x" "y"

我想要的my_list輸出是一個命名向量

 Y   Y   K   K   K  
"p" "q" "s" "t" "u"

我們unlistlist ,同時設置由名rep licating

setNames(unlist(my_list), rep(names(my_list), lengths(my_list)))

或者stack成兩列data.frame,提取'values'列並用'ind'命名

with(stack(my_list), setNames(values, ind))

如果你的名字不以數字結尾:

vec <- unlist(my_list)
names(vec) <- sub("\\d+$","",names(vec))
vec                
#   Y   Y   K   K   K 
# "p" "q" "s" "t" "u" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM