2015-10-15 47 views
1

我有一個列表如何爲矢量分配名稱,如果它們都屬於列表?

test_list = list(foo = c("a","b","c"), bar = c("First", "Second")) 
test_list 
# $foo 
# [1] "a" "b" "c" 
# $bar 
# [1] "First" "Second" 

我想的名字分配給向量的每個元素,這是我從數據幀的水平得到

annotation = data.frame(foo = factor(c(rep(1,3),rep(2,2), rep(3,1))), 
         bar = factor(c(rep('Male',2), rep('Female',4)))) 
# foo  bar 
# 1 Male 
# 1 Male 
# 1 Female 
# 2 Female 
# 2 Female 
# 3 Female 

我可以提取水平如下:

lapply(annotation, levels) 

我可以一個接一個地指定姓名:

names(test_list$foo) <- levels(annotations$foo) 

但是,由於實際上我有更長的列表,我想要矢量化命名過程。數據框中的列數與列表中元素的數目完全匹配;每個因素的層次數與向量中元素的數量完全匹配,這些元素是列表的元素。

如何在不進入循環的情況下做到這一點?

回答

1

我們可以使用Maplist元素test_list指定的對應列的名稱。

test_list <- Map(setNames, test_list, lapply(annotation, levels)) 
相關問題