2013-10-09 70 views
21

我需要將多行兩列data.frame轉換爲命名字符向量。 我data.frame會是這樣的:將數據幀的兩列轉換爲命名向量

dd = data.frame(crit = c("a","b","c","d"), 
       name = c("Alpha", "Beta", "Caesar", "Doris") 
       ) 

,我真正需要是什麼:

whatiwant = c("a" = "Alpha", 
       "b" = "Beta", 
       "c" = "Caesar", 
       "d" = "Doris") 

回答

34

使用names功能:

whatyouwant <- as.character(dd$name) 
names(whatyouwant) <- dd$crit 

as.character是必要的,因爲data.frameread.table用默認設置將字符轉換爲因子。

如果你想要一個班輪:

whatyouwant <- setNames(as.character(dd$name), dd$crit) 
11

您可以從dd$name做載體,並使用names()加名字,但你可以用structure()做到這一切在一個步:

whatiwant <- structure(as.character(dd$name), names = as.character(dd$crit)) 
4

對於品種,試着splitunlist

unlist(split(as.character(dd$name), dd$crit)) 
#  a  b  c  d 
# "Alpha" "Beta" "Caesar" "Doris" 
+0

應該指出的是,通過向它們附加一個數字,這使得重複名稱是唯一的。對於大型媒體來說它也不是很有效率。 – Roland

相關問題