我有一个2xN的矩阵,带有姓和名,并且想要一个列表,其中键是姓,元素是姓氏的人。我可以使用for循环和条件来做到这一点,但想知道是否存在reshape
函数或直接做到这一点的东西。
people<-cbind.data.frame(c(rep("smith",2),rep("miller",2)),c("John","Jane","Alex","Jes"))
我想要一个列表,其中x[["smith"]]
答案 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")
有关更多信息: