私は.csvファイルから読み込まれ、このようになります。データフレームがあります。データフレーム
job name `phone number`
<chr> <chr> <int>
1 developer john 654
2 developer mike 321
3 developer albert 987
4 manager dana 741
5 manager guy 852
6 manager anna 936
7 developer dan 951
8 developer shean 841
9 administrative rebeca 357
10 administrative krissy 984
11 administrative hilma 651
12 administrative otis 325
13 administrative piper 654
14 manager mendy 984
15 manager corliss 321
DT = structure(list(job = c("developer", "developer", "developer",
"manager", "manager", "manager", "developer", "developer", "administrative",
"administrative", "administrative", "administrative", "administrative",
"manager", "manager"), name = c("john", "mike", "albert", "dana",
"guy", "anna", "dan", "shean", "rebeca", "krissy", "hilma", "otis",
"piper", "mendy", "corliss"), phone = c(654L, 321L, 987L, 741L,
852L, 936L, 951L, 841L, 357L, 984L, 651L, 325L, 654L, 984L, 321L
)), .Names = c("job", "name", "phone"), row.names = c(NA, -15L
), class = "data.frame")
私は、たとえば、どこで、リストのリストに変換したい:
をmyList$developer
は私にすべての開発者を含むリストを与えるだろうし、その後
myList$developer$john
は私に関連付けられている電話番号のリストを与えるだろうジョンという名前の開発者とそれを行う簡単な方法はありますか?
なぜ私はそのようなことをしたいと思うのですか?私が実際に使っているデータフレームは巨大なので、4つのパラメータで特定のエントリを見つけることができます(この例では、 2つのパラメータ(ジョブ、名前)を持つ特定のエントリは、フィルタを使用するのに時間がかかりすぎます。私は、ネストされたリストのハッシュテーブル構造は構築するのに時間がかかるかもしれないと思うが、O(1)では検索可能である。 私が間違っていて、あなたがそれをやるより良い方法を持っているなら、私もそれを聞きたいです。
'lapply(split(df、df $ job)、function(x)split(x $ phone_number、x $ name))'はそれを行います。 –
@AndrewGustarそれは私の答えと同じです;-) – Jaap