Создание списка из фрейма данных R - PullRequest
0 голосов
/ 05 июля 2018

У меня есть матрица 2xN с фамилией и именем, и я хотел бы иметь список, где ключ - это фамилия, а элементы - это люди с этой фамилией. Я мог бы сделать это с помощью цикла for и coditionals, но подумал, есть ли функция reshape или что-то, что делает это напрямую.

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

и мне нужен список, где x[["smith"]]

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Я знаю, что вы просили 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

0 голосов
/ 05 июля 2018

Вы пробовали split()?

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

$smith
[1] John Jane
Levels: Alex Jane Jes John
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...