从数据框R生成列表

时间:2018-07-05 14:30:54

标签: r reshape reshape2

我有一个2xN的矩阵,带有姓和名,并且想要一个列表,其中键是姓,元素是姓氏的人。我可以使用for循环和条件来做到这一点,但想知道是否存在reshape函数或直接做到这一点的东西。

people<-cbind.data.frame(c(rep("smith",2),rep("miller",2)),c("John","Jane","Alex","Jes"))

我想要一个列表,其中x[["smith"]]

2 个答案:

答案 0 :(得分:3)

您尝试过split()吗?

split(people[[2]], people[[1]])
$`miller`
[1] Alex Jes 
Levels: Alex Jane Jes John

$smith
[1] John Jane
Levels: Alex Jane Jes John

答案 1 :(得分:2)

我知道您要一个list,但对于R中的字典,我可以推荐hashmap

people <-cbind.data.frame(c(rep("smith",2),rep("miller",2)),c("John","Jane","Alex","Jes"), stringsAsFactors=F)
H      <- hashmap(people[,1], people[,2])
H
## (character) => (character)
##    [miller] => [Jes]      
##     [smith] => [Jane]
H$values()
[1] "Jes"  "Jane"
H$keys()
[1] "miller" "smith"

它非常高效,具有令人难以置信的工具集,并为R提供了其缺少的字典功能,然后提供了一些功能!

可以通过将查找键向量传递给[[或$ find:

H[["smi"]]

H$find("mill")

有关更多信息:

https://github.com/nathan-russell/hashmap